如果满足条件,请重新路由用户

问题描述 投票:0回答:1

我正在尝试在路由器中添加一个条件,该条件将重定向用户(如果这是用户首次访问该应用程序。当用户登录时,返回的对象带有属性firstTime,该属性可以为true或false。

我正在尝试如下使用三元运算符:

const ClientRoutes = ({ openHelp }) => {
  const firstTime = true;

  return (
    <div>
      <Location>
        {({ location }) => (
          <Router location={location} primary={false}>

            {firstTime ? navigate("/welcome") : null}

            <ClientDocFolders path="/" />
            <WelcomePageContainer path="/welcome" />
            <ErrorNotFound default />
          </Router>
        )}
      </Location>
    </div>
  );
};

export default withClient(ClientRoutes);

这给我一个错误,说:Error: Objects are not valid as a React child我也尝试过用如下函数调用替换navigate("/welcome"){firstTime ? openHelp() : null}{firstTime ? ()=> openHelp() : null}。其中第一个在重定向我时起作用,但是该函数被反复调用而没有结束。第二个功能不起作用(我的打开帮助功能永远不会运行)。

我正在使用到达路由器,但是我认为这个问题与JS有关。

javascript reactjs routing
1个回答
1
投票

您可以使用Redirect组件进行重定向。

const ClientRoutes = ({ openHelp }) => { const firstTime = true; return (
<div>
  <Location>
    {({ location }) => (
    <Router location="{location}" primary="{false}">
      {firstTime ? <Route render={() => <Redirect to="welcome" />} /> : null}
      <ClientDocFolders path="/" />
      <WelcomePageContainer path="/welcome" />
      <ErrorNotFound default />
    </Router>
    )}
  </Location>
</div>
); }; export default withClient(ClientRoutes);


© www.soinside.com 2019 - 2024. All rights reserved.