假设我有一个包含当前用户信息的身份验证缩减器。当身份验证减少器为 null,但我在本地存储中具有有效的 jwt 时,自动部署 populateUser()
操作的最佳方法是什么?
如果您使用的是 React-Router,则可以使用 "onEnter" 钩子将 ajax 请求发送到后端路由,该路由在每次发生路由更改时检查令牌的请求标头。 然后,服务器发回关联的用户数据,从而允许更新状态。以下代码假设对 api 请求使用 react-redux、redux-thunk 中间件和 axios。
<Provider store={store}>
<Router history={browserHistory}>
<Route path="/" component={App} onEnter={checkAuth }>
< children..../>
</Route>
</Router>
</Provider>
function checkAuth(){
store.dispatch(authenticate())
}
function authenticate() {
return function (dispatch) {
axios.get('/api/auth/')
.then(user => {
dispatch(populateUser(user))
}
}
}