Reactjs 在传递值时响应Redux重定向
我正在为一个应用程序使用React+Redux+React路由器。我的初始页面是一个登录屏幕,一旦身份验证成功,我希望在传递从身份验证检索到的令牌时重定向到另一个页面。我正在研究这个SO问题,但没有说明如何将值传递到新页面: 我正在考虑采纳Dan的建议,在action creator中粘贴重定向(用于成功登录),但不确定如何将令牌传递回。这是我的行动创造者:Reactjs 在传递值时响应Redux重定向,reactjs,redux,react-router,react-redux,Reactjs,Redux,React Router,React Redux,我正在为一个应用程序使用React+Redux+React路由器。我的初始页面是一个登录屏幕,一旦身份验证成功,我希望在传递从身份验证检索到的令牌时重定向到另一个页面。我正在研究这个SO问题,但没有说明如何将值传递到新页面: 我正在考虑采纳Dan的建议,在action creator中粘贴重定向(用于成功登录),但不确定如何将令牌传递回。这是我的行动创造者: export const loginSucceeded = token => { browserHistory.push('
export const loginSucceeded = token => {
browserHistory.push('/dashboard')
}
我建议使用。它带有推送
和替换
操作,因此您可以在登录成功
操作创建者中调度
操作。这是一种处理路由更改的更干净的方法,您将在redux开发工具中看到正确的操作。在localStorage
假设您使用中间件:
export const loginSucceeded = token => {
return dispatch => {
localStorage.setItem('token', token);
dispatch(push('/dashboard'));
};
};
使用react router 4,您可以尝试以下操作:
import { Route, Redirect } from 'react-router-dom';
export const loginSucceeded = token => {
<Redirect push to={{
pathname: '/dashboard',
state: { token: token }
}}/>
}
从'react router dom'导入{Route,Redirect};
export const loginsucseed=token=>{
}
稍后,可以通过仪表板页面的this.props.location.state.token
访问此令牌
我建议将令牌存储在
localStorage
中。然后它将可以在任何地方访问,并在页面刷新后保留。但是您当然可以为您的令牌创建一个reducer,并通过connect
@azium访问它。保存在localStorage
中处理页面刷新不是更好吗?如果localStorage
标记为空,则请求身份验证。是的,它也必须使用reducer,其他任何地方都可以通过reducer访问令牌。因此,它可能是您的两个评论的组合:)