具有反应路线的三元运算符中的多个表达式

heshamamelmasry99

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

它不工作。我的问题是如何对三元运算符做多项操作,无论它是对还是错。

<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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用具有4个表达式的三元运算符

条件表达式/三元运算符

使用三元运算符时出现“表达式必须具有整数类型”错误

没有中间表达式的三元运算符

pylint讨论带有赋值表达式的三元运算符

具有多个变量的三元运算符

在使用过滤器的表达式中应用三元运算符

JavaScript三元运算符表达式中的Return语句

堆叠三元运算符在Angularjs表达式中不起作用

CMake生成器表达式中的三元运算符

C中三元运算符中的条件表达式

在 PHP 中的数组内使用具有多个条件的三元运算符

`throw` 可以在 C++ 条件(三元)运算符中的逗号子表达式内吗?

lambda 表达式中的三元运算符不适用于空值

rvalue分配的三元表达式不使用移动分配运算符

带条件(三元)表达式的运算符“ sizeof”

使用三元运算符分配给表达式

空第二表达式的Javascript三元运算符

将表达式从三元转换为逻辑运算符

使用三元运算符在计算器上非法开始表达式

来自三元运算符的赋值将忽略剩余的表达式

这个三元运算符表达式的等价物是什么?

在给出“预期输出”的三元/运算符表达式中使用中断

在给出“预期输出”的三元/运算符表达式中使用中断

具有三元运算符的Java SE 11字符串最终变量在切换案例表达式中不算作常量变量

三元运算符中的多个运算

matlab是否具有三元运算符?

具有字典的三元运算符[python]

具有Undef的Perl三元运算符