Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJS重定向_Javascript_Redirect_Reactjs_React Router - Fatal编程技术网

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 }
    })
  }
}