我正在尝试在路由器中添加一个条件,该条件将重定向用户(如果这是用户首次访问该应用程序。当用户登录时,返回的对象带有属性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有关。
您可以使用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);