具有反应路线的三元运算符中的多个表达式
multiple expressions in ternary operator with react route
嘿,我想在我的路线上设置一个会话项目,这样我就可以在我的身份验证回调中使用它。所以这里我有一个三元运算符,我检查它是否经过身份验证然后我做一些事情,如果没有我做两件事。
它不起作用。我的问题是如何对三元运算符做多项操作,无论它是真还是假。
<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"/>
);
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;
解决了我的问题
嘿,我想在我的路线上设置一个会话项目,这样我就可以在我的身份验证回调中使用它。所以这里我有一个三元运算符,我检查它是否经过身份验证然后我做一些事情,如果没有我做两件事。
它不起作用。我的问题是如何对三元运算符做多项操作,无论它是真还是假。
<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"/>
);
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;
解决了我的问题