采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
我模仿电商网站的这个功能写了一个差不多的slice 以下是我模仿该功能的代码 但是如果刷新页面就会产生错误,错误相关日志在下面 如果将页面useEffect中的dispatch先注释掉等待页面渲染完成后再重新修改代码就可以正常获取数据 进步一排查发现问题所在 因为我封装了一下axios 在拦截器里面使用了store 错误是从这两句里面出来的 但是如果我想要封装axios该如何解决类似的问题呢
关于你的情况我有两个猜测:
第一种可能性是由于你的axios拦截器没有参与app的初始化生命周期所导致的。我觉得你可以尝试一下把axios拦截器放在app组件的componentDidMount (或useEffect hook)中,在通过组件生命周期来dispatch auth clearToken 这个action。如果上面的方案成功,那么你也可以再次重构,把axios拦截器从app组件中剥离出来,放在provider里面。
第二种可能性是页面在初始化的时候分两个步骤,第一步是获得bear token,而第二步的dispatch(getMonment())则是建立在获得bear token的基础上。所以你也可以试试在有且仅当token存在的时候才执行dispatch(getMonment())。
你先试试,不成功的话我们再继续研究
感谢老师 成功用方案一解决问题 将axios的拦截器放到APP的hooks中不再报错
登录后可查看更多问答,登录/注册
React18 精讲 + 结合 TS 实战 + 热门业务开发,获取必备技能
655 5
819 10
706 2
1.7k 2
810 1