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;