关于阻塞react render的问题

情况是这样的,登录后,我将用户的token存在了localStorage中,然后用户刷新或者重启浏览器后,我会在在初始化的时候从localStorage中取出token,然后发送一个携带token的请求到后台,然后根据返回token是否过期的结果,来决定是否重定向到登录页面,现在的问题是,render()不会等待我的请求,

那请问怎么实现,让render等待我的请求呢?

<Auth path="/exchangeRecord" component={ExchangeRecord} />

ExchangeRecord是一个组件,Auth是用来拦截的容器组件

clipboard.png

阅读 5.4k
4 个回答

在前后端分离的情况下,不建议cookiesessionfetch默认都不会带cookie的。
楼主说的思路没有问题,也是通用解决方案。
就是为什么要让render等待fetch呢?完全没有必要。
你可以尝试如下操作:
页面跳转或者加载组件依赖接口返回的数据时,你就等到fetch返回再操作,就是放到then中,这之前再加一级then,在此判断返回状态。
所以,当服务端判断token失效,返回一个特定的状态码。在then中直接处理掉,一般history.push(login page),然后清除localstorage.

为什么不用cookie ?

谢邀,我有同楼上的疑问,为什么不用cookie,如果用cookie的话,每次请求都会带上的,而且cookie可以设置失效时间。

当然,我们的建议是我们的建议,问题还是要帮忙的,毕竟谁没几个坑的需求呀。

最简单,用同步的方法发请求,直接给浏览器挂起,惊不惊喜意不意外。

其他的方式,不渲染组件就不会执行咯。那你当然是等ajax的请求返回直接再开始渲染组件啦。加个loading动画什么的

同楼上。。。用个条件变量,开始不要渲染组件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题