Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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
Reactjs 如何通过react路由器重定向登录和注册页面_Reactjs_React Router_React Router Dom - Fatal编程技术网

Reactjs 如何通过react路由器重定向登录和注册页面

Reactjs 如何通过react路由器重定向登录和注册页面,reactjs,react-router,react-router-dom,Reactjs,React Router,React Router Dom,我是REACTE的新手,我已经搜索过了,但找不到任何解决方案。我的问题是设置个人页面,如果想访问主页,我必须先登录,没有其他选项。所以我使用react路由器的重定向来实现这一点。我检查localStorage用户并重定向到/signin。但如果我没有任何帐户,我必须先注册。因此,我在登录页面中有一个链接“创建帐户”移动到注册页面(/signup)。问题就在这里。重定向仅允许访问/登录。在这种情况下,我不知道如何访问这两个页面。能给我点建议吗?谢谢你阅读我的问题。 这是我的密码: homeTemp

我是REACTE的新手,我已经搜索过了,但找不到任何解决方案。我的问题是设置个人页面,如果想访问主页,我必须先登录,没有其他选项。所以我使用react路由器的重定向来实现这一点。我检查localStorage用户并重定向到/signin。但如果我没有任何帐户,我必须先注册。因此,我在登录页面中有一个链接“创建帐户”移动到注册页面(/signup)。问题就在这里。重定向仅允许访问/登录。在这种情况下,我不知道如何访问这两个页面。能给我点建议吗?谢谢你阅读我的问题。 这是我的密码: homeTemplate的index.js

  return (
    <>
      <Header />

      {props.children}
      <Footer />
    </>
  );
}

const HomeTemplate = ({ exact, path, component }) => {
  if (!localStorage.getItem("KhachHang")) return <Redirect to="/signin" />;
  return (
    <LayoutHome>
      <Route exact={exact} path={path} component={component} />
    </LayoutHome>
  );
};

export default HomeTemplate;

返回(
{props.children}
);
}
常量HomeTemplate=({exact,path,component})=>{
如果(!localStorage.getItem(“KhachHang”))返回;
返回(
);
};
导出默认HomeTemplate;
app.js

  const dispatch = useDispatch();
  useEffect(() => {
    dispatch(LayThongTinHeThongRap());
    dispatch(LayDanhSachPhim());
  }, []);

  const showLayoutHome = (routes) => {
    if (routes && routes.length > 0) {
      return routes.map((item, index) => {
        return (
          <HomeTemplate
            key={index}
            exact={item.exact}
            path={item.path}
            component={item.component}
          />
        );
      });
    }
  };

  return (
    <BrowserRouter>
      <Switch>
        {showLayoutHome(routeHome)}
        <Route path="/signin" component={SignIn} />
      </Switch>
    </BrowserRouter>
  );
} ```
const dispatch=usedpatch();
useffect(()=>{
调度(laythongthinhethongrap());
调度(LayDanhSachPhim());
}, []);
const showLayoutHome=(路由)=>{
如果(路由和路由长度>0){
返回路线图((项目,索引)=>{
返回(
);
});
}
};
返回(
{showLayoutHome(routeHome)}
);
} ```

如果用户未登录,您如何事先知道他们没有帐户,需要先注册?似乎您的
sign
组件应该提供登录和验证选项,或者导航到“/signup”路径供用户注册。抱歉,我的英语不好。正如您所说,也许我应该向我的signin组件添加一个布尔标志。当单击“创建帐户”时,更改标志值,选项为signin或signup pageThat can work,但我指的是类似这样的内容:
,其中
signin
组件导航到“/signup”以注册用户。我同意Drew的观点。您最好在登录组件上有一个链接标签,该标签会转到注册页面,让用户决定是否需要注册。