嘿,我想在我的路线上设置一个会话项目,以便我可以在我的身份验证回调中使用它。所以在这里我有一个三元运算符,我检查它是否经过身份验证然后我做一些事情,如果没有我做两件事。
它不工作。我的问题是如何对三元运算符做多项操作,无论它是对还是错。
<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} />;
}
}}/>
具体来说,问题在于三元运算符解析为然后由三元左侧的任何内容进行评估的内容。
例如
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"/>
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句