老师您好,请帮忙看看我使用createAsyncThunk引起页面出错的问题
来源:12-9 【redux连接】完成在线支付

Vangz
2021-08-18
我模仿电商网站的这个功能写了一个差不多的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())。
你先试试,不成功的话我们再继续研究
112021-08-19
相似问题