Javascript ReactJS重定向
我正在应用程序中使用Javascript ReactJS重定向,javascript,redirect,reactjs,react-router,Javascript,Redirect,Reactjs,React Router,我正在应用程序中使用ReactJS和reactrouter。我需要做下一件事:当用户打开页面时,检查他是否登录,如果是,然后重定向到/auth页面。我在做下一件事: componentWillMount: function() { if (sessionStorage["auth"] == null) { this.transitionTo("/auth"); } }, 在浏览器url中,它确实重定向到/auth,呈现/auth页面,然后用当前组件覆盖它。所以这
ReactJS
和reactrouter
。我需要做下一件事:当用户打开页面时,检查他是否登录,如果是,然后重定向到/auth
页面。我在做下一件事:
componentWillMount: function() {
if (sessionStorage["auth"] == null) {
this.transitionTo("/auth");
}
},
在浏览器url中,它确实重定向到
/auth
,呈现/auth
页面,然后用当前组件覆盖它。所以这里的问题是:如何取消当前组件的渲染,或者如何以其他方式重定向?谢谢。看一下react路由器示例验证和共享根目录:
他们主要做的是检查一条路线的入口。查看文件config/routes.js
第36、51和89行:
{ onEnter: redirectToLogin,
childRoutes: [
// Protected nested routes for the dashboard
{ path: '/page2',
getComponent: (location, cb) => {
require.ensure([], (require) => {
cb(null, require('../components/PageTwo'))
})
}
}
// other protected routes...
]
}
当输入或推送到路由/page2
时,此路由将调用函数redirectToLogin。如果使用auth.loggedIn()对用户进行了身份验证,则该函数可以检查
如果用户未登录,该功能将替换到/login
的路由,用户可以在该路由中进行身份验证 我遇到了类似的问题,我的解决方案基于react路由器示例:
function redirectToLogin(nextState, replace) {
if (!auth.loggedIn()) {
replace({
pathname: '/login',
state: { nextPathname: nextState.location.pathname }
})
}
}