Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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_Session Storage - Fatal编程技术网

Javascript 具有反应路径的三元算子的多重表达式

Javascript 具有反应路径的三元算子的多重表达式,javascript,reactjs,session-storage,Javascript,Reactjs,Session Storage,嘿,我想在路由上设置一个会话项,以便在身份验证回调中使用它。这里我有一个三元运算符,我检查它是否经过身份验证,然后我做一些事情,如果没有,我做两件事情 它不起作用。我的问题是如何在三元运算符上做多种事情,不管它是真是假 <Route path="/dashboard" render={(props) => ( auth.isAuthenticated() ? ( <whateverComp auth={auth} {...prop

嘿,我想在路由上设置一个会话项,以便在身份验证回调中使用它。这里我有一个三元运算符,我检查它是否经过身份验证,然后我做一些事情,如果没有,我做两件事情

它不起作用。我的问题是如何在三元运算符上做多种事情,不管它是真是假

<Route path="/dashboard" render={(props) => (
          auth.isAuthenticated() ? (
              <whateverComp auth={auth} {...props} />
          ) : (
              <Redirect to="/log-in"/>
          ) ? // setter for page_name
              sessionStorage.setItem('page_name', 'dashboard'): null
      )}/>
(
auth.isAuthenticated()(
) : (
)?//页面名称的设置器
sessionStorage.setItem('page_name','dashboard'):null
)}/>
我的解决方案是:

<Route path="/dashboard" render={(props) => {
        if (!auth.isAuthenticated()) {
          sessionStorage.setItem('page_name', 'dashboard');
          return <Redirect to="/log-in"/>;
        }
        else {
          return <Dashboard auth={auth} {...props} />;
        }
      }}/>
{
如果(!auth.isAuthenticated()){
setItem('page_name','dashboard');
返回;
}
否则{
返回;
}
}}/>

具体来说,问题是三元运算符分解成某个值,然后由三元运算符左侧的任何值进行计算

比如说

const x = condition
          ? result1
          : result2;
但是,如果三元函数的左边没有任何东西,它除了副作用之外什么也不起作用,副作用在
if
语句中表现得更为明显。(如果您的代码比一行代码复杂得多,您可能还应该使用
if
/
else

也许你想要

if(!auth.isAuthenticated())返回(
);
setItem('page_name','dashboard');
返回(
);

解决了我的问题

嘿,Certian,谢谢你,不,我实际上想对错误结果做两件事,我想设置一个会话使用一个if语句,让你的代码变得清晰。(编辑)
choreDoor === 0 ? 
   (openDoor1 = botDoorPath,
    openDoor2 = beachDoorPath,
    openDoor3 = spaceDoorPath)
: choreDoor === 1 ? 
   (openDoor2 = botDoorPath,
    openDoor1 = beachDoorPath, 
    openDoor3 = spaceDoorPath) 
: choreDoor === 2 ?
   (openDoor3 = botDoorPath,
    openDoor1 = beachDoorPath, 
    openDoor2 = spaceDoorPath)
: false;