请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师您好,请帮忙看看我使用createAsyncThunk引起页面出错的问题

我模仿电商网站的这个功能写了一个差不多的slice图片描述
以下是我模仿该功能的代码
图片描述
图片描述
图片描述
但是如果刷新页面就会产生错误,错误相关日志在下面
图片描述
如果将页面useEffect中的dispatch先注释掉等待页面渲染完成后再重新修改代码就可以正常获取数据
图片描述
图片描述
进步一排查发现问题所在
图片描述
因为我封装了一下axios 在拦截器里面使用了store 错误是从这两句里面出来的 但是如果我想要封装axios该如何解决类似的问题呢

正在回答

1回答

关于你的情况我有两个猜测:

第一种可能性是由于你的axios拦截器没有参与app的初始化生命周期所导致的。我觉得你可以尝试一下把axios拦截器放在app组件的componentDidMount (或useEffect hook)中,在通过组件生命周期来dispatch auth clearToken 这个action。如果上面的方案成功,那么你也可以再次重构,把axios拦截器从app组件中剥离出来,放在provider里面。

第二种可能性是页面在初始化的时候分两个步骤,第一步是获得bear token,而第二步的dispatch(getMonment())则是建立在获得bear token的基础上。所以你也可以试试在有且仅当token存在的时候才执行dispatch(getMonment())。

你先试试,不成功的话我们再继续研究

1 回复 有任何疑惑可以回复我~
  • 提问者 Vangz #1
    感谢老师 成功用方案一解决问题 将axios的拦截器放到APP的hooks中不再报错
    回复 有任何疑惑可以回复我~ 2021-08-19 09:55:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信