情况是这样的,登录后,我将用户的token存在了localStorage中,然后用户刷新或者重启浏览器后,我会在在初始化的时候从localStorage中取出token,然后发送一个携带token的请求到后台,然后根据返回token是否过期的结果,来决定是否重定向到登录页面,现在的问题是,render()不会等待我的请求,
那请问怎么实现,让render等待我的请求呢?
<Auth path="/exchangeRecord" component={ExchangeRecord} />
ExchangeRecord是一个组件,Auth是用来拦截的容器组件
在前后端分离的情况下,不建议
cookie
和session
。fetch
默认都不会带cookie
的。楼主说的思路没有问题,也是通用解决方案。
就是为什么要让
render
等待fetch
呢?完全没有必要。你可以尝试如下操作:
页面跳转或者加载组件依赖接口返回的数据时,你就等到
fetch
返回再操作,就是放到then
中,这之前再加一级then
,在此判断返回状态。所以,当服务端判断
token
失效,返回一个特定的状态码。在then
中直接处理掉,一般history.push(login page)
,然后清除localstorage
.