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

Javascript 如果满足条件,则重新路由用户,javascript,reactjs,routing,Javascript,Reactjs,Routing,我正在尝试在我的路由器中添加一个条件,如果用户是第一次使用应用程序,则该条件会重定向用户。当用户登录对象时,返回的属性为firstTime,该属性可以是true,也可以是false 我尝试使用三元运算符,如下所示: const ClientRoutes = ({ openHelp }) => { const firstTime = true; return ( <div> <Location> {({ location

我正在尝试在我的路由器中添加一个条件,如果用户是第一次使用应用程序,则该条件会重定向用户。当用户登录对象时,返回的属性为
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);
constclientroutes=({openHelp})=>{
const firstTime=true;
返回(
{({location})=>(
{firstTime?导航(“/welcome”):null}
)}
);
};
使用客户端导出默认值(ClientRoutes);
这给了我一个错误的说法:
错误:对象作为子对象无效
我还尝试用如下函数调用替换
导航(“/welcome”)
{firstTime?openHelp():null}
{firstTime?()=>openHelp():null}
。第一种方法可以重定向我,但是函数会被无休止地重复调用。第二个函数根本不起作用(我的open help函数从未运行)


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

您可以使用
重定向组件进行重定向,并且
本地存储可以用于保存用户状态

或者您可以使用
useffect
hook进行导航

注意:
localStorage
将数据保存在客户端,用户可以随时删除这些数据,因此我建议将数据保存在一些后端数据库中

const-App=()=>{
useffect(()=>{
const isNewUser=localStorage.getItem(“isNewUser”)
?localStorage.getItem(“isNewUser”)
:localStorage.setItem(“isNewUser”,false);
如果(!isNewUser){
导航(“/欢迎”);
}
});
返回(
辅导的
家
仪表板

); };
无反应钩

使用React Hook并导航


我得到以下错误:
错误:[object]
我也只希望重定向发生一次。因此,当用户第二次尝试转到“/”时,不应重定向它们。与之前相同的错误:/。在这里,我感觉无法从return方法内部运行函数。我确实有一个在return语句之前调用
useffect
的解决方案,但如果可能的话,我想避免这种情况。我不是100%确定。我继承了这部分代码,但我认为它是用来传递动画效果的?这是文件,我还是有同样的错误。问题在于
变量,而不是
firstTime
变量。如果我尝试类似于
{firstTime?console.log('true'):console.log('false')}
。我可以看到“true”被记录下来了。让我们来看看。
const App = () => {
  useEffect(() => {
    const isNewUser = localStorage.getItem("isNewUser")
      ? localStorage.getItem("isNewUser")
      : localStorage.setItem("isNewUser", false);
    if (!isNewUser) {
      navigate("/welcome");
    }
  });

  return (
    <div>
      <h1>Tutorial!</h1>
      <nav>
        <Link to="/">Home</Link>
        <Link to="dashboard">Dashboard</Link>
      </nav>
      <br />
      <Router primary="{false}">
          <ClientDocFolders path="/" />
          <WelcomePageContainer path="/welcome" />
          <ErrorNotFound default />
      </Router>
    </div>
  );
};