嘿我想在我的路线上设置会话项目,以便我可以在我的身份验证回调中使用它。所以这里我有一个三元运算符,我检查它是否经过验证然后我做了一些事情,如果不是我做两件事。
它不起作用。我的问题是如何在三元运算符上做多个事情,无论它是真还是假。
<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
)}/>
我的解决方案:
<Route path="/dashboard" render={(props) => {
if (!auth.isAuthenticated()) {
sessionStorage.setItem('page_name', 'dashboard');
return <Redirect to="/log-in"/>;
}
else {
return <Dashboard auth={auth} {...props} />;
}
}}/>
答案 0 :(得分:1)
具体来说,问题是三元运算符会解析为然后通过三元的 left 上的任何内容进行评估。
例如
const x = condition
? result1
: result2;
但是如果三元组的左边没有任何东西,除了副作用之外什么都不做,而if
语句可以更清楚地做到这一点。 (如果您的代码比合理地适合单行更复杂,您也应该使用if
/ else
。
也许你想要
if (!auth.isAuthenticated()) return (
<whateverComp auth={auth} {...props} />
);
sessionStorage.setItem('page_name', 'dashboard');
return (
<Redirect to="/log-in"/>
);
答案 1 :(得分:0)
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;
解决了我的问题