Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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 仅在某些情况下重定向_Javascript_Reactjs_Typescript_React Router_React Router V4 - Fatal编程技术网

Javascript 仅在某些情况下重定向

Javascript 仅在某些情况下重定向,javascript,reactjs,typescript,react-router,react-router-v4,Javascript,Reactjs,Typescript,React Router,React Router V4,我已经实现了这样的私有路由。如果本地存储中存在令牌,则可以访问专用路由。如果没有,我们应该重定向到/404页面: const token = localStorage.getItem('token'); const PrivateRoute = ({component, isAuthenticated, ...rest}: any) => { const routeComponent = (props: any) => ( isAuthenticated

我已经实现了这样的私有路由。如果本地存储中存在令牌,则可以访问专用路由。如果没有,我们应该重定向到/404页面:

const token = localStorage.getItem('token');
const PrivateRoute = ({component, isAuthenticated, ...rest}: any) => {
  const routeComponent = (props: any) => (
      isAuthenticated
          ? React.createElement(component, props)
          : <Redirect to={{pathname: '/404'}}/>
  );
  return <Route {...rest} render={routeComponent}/>;
};
编辑::

我也试过用这个:

  if(localStorage.getItem('token')){
    return <Redirect to='/panel'/>
  }
});

拆下容器末端的此管路

{submitted && <Redirect to='/panel'/>}
通过从submitForm方法返回promise,您可以执行以下操作

onSubmit={e => {
   e.preventDefault();
   submitForm(LoginMutation).then((res: any) => {
      RedirectionToPanel();
      FormSubmitted();
   });
}}

如果我删除该行,则当令牌存在时也不会发生重定向。它也不会执行,因为当组件装入时,
submitted
的值始终为false。从方法
重定向Topanel
if
语句中删除
提交的
,然后通过
useffect
调用它(这样它会指向
面板
,如果有令牌),或者将组件更改为
React.component
您在那里有很多方法,而且使用起来也很合理,我收到一个错误,说类型“void”上不存在
Property'then'。
上的ts(2339)
。那么
您能举个例子说明我如何在这里使用useEffect吗?在我更新了我如何尝试使用useffect()的问题之前,我还没有机会使用它
{submitted && <Redirect to='/panel'/>}
function submitForm(LoginMutation: any) {
   const { email, password } = state;
   return LoginMutation({
     variables: {
       email,
       password,
     },
   }).then(({ data }: any) => {
      localStorage.setItem('token', data.loginEmail.accessToken);
   }).catch(console.error);
}
onSubmit={e => {
   e.preventDefault();
   submitForm(LoginMutation).then((res: any) => {
      RedirectionToPanel();
      FormSubmitted();
   });
}}