【问题标题】:Multiple Inline If-Else with Conditional Operator带有条件运算符的多个内联 If-Else
【发布时间】:2020-12-10 22:26:40
【问题描述】:

你能帮我解决这个问题吗?基本上我想说的是 如果props.row.registeredtrue 设置禁用为true 或如果props.row.registeredundefined 设置为false。

<Button
     disabled={!props.row.registered ? true : !props.row.registered === undefined ? false : true}
    ...
    />

【问题讨论】:

    标签: reactjs conditional-operator conditional-rendering


    【解决方案1】:

    你的三元运算符基本上是这样做的:

    if(props.row.registered === true) {
      return true;
    else {
      return false;
    }
    

    可以简化为:

    return props.row.registered;
    

    因此,根据您的条件,它将是:

    props.row.registered || props.row.registered !== undefined
    

    (根据您的声明,因为您的代码将禁用设置为 true,如果 props.row.registeredfalse,这与您的声明相反)

    【讨论】:

    • !props.row.registered === undefined 看起来很可疑 :) 你想写&amp;&amp; props.row.registered !== undefined 吗?一般来说,undefinedfalsy
    • 基本上这个想法是当我从props.row.registered 获得一个布尔值来确定禁用时,但是当我在我的情况下undefined 无法访问此值时,将按钮返回为@987654333 @
    • disabled={!props.row.registered &amp;&amp; props.row.registered !== undefined} 这已经完成了,谢谢队友
    【解决方案2】:

    您的布尔值可以有 4 个值:falsetrueundefinednull

    disabled={props.row.registered}
    

    对于您的用例应该足够了,因为 undefinednull 都是虚假的。

    【讨论】:

    • 是的,但我希望当我有一个 undefined 值时将禁用设置为 false。在我的情况下,当我写 disabled={!props.row.registered} 时工作正常,但是当我出于某种原因切换到下一页时,其余按钮当它们没有此 registered 布尔值或未定义值时,它们也被禁用。
    • @PandaMastr 那么你的错误可能在其他地方。 undefined 不会禁用您的按钮。请注意,我没有 !,因为您说您希望 registered === true 禁用按钮。
    猜你喜欢
    • 1970-01-01
    • 2019-10-20
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 2022-12-06
    • 2014-01-29
    相关资源
    最近更新 更多