【问题标题】:Behavior for single if condition (omitting else return false)单个 if 条件的行为(省略 else 返回 false)
【发布时间】:2019-10-30 11:20:51
【问题描述】:

我能够为这个 React 生命周期方法省略 else return false 并且仍然让它按需要工作,对于奇数返回 false (value 从 0 递增 1 - 请参阅 freeCodeCamp challenge 了解其余部分代码),但我不清楚它为什么会这样工作。

shouldComponentUpdate(nextProps, nextState) {
    console.log('Should I update?');
    if (nextProps.value % 2 == 0) return true;
  }

由于 shouldComponentUpdate 在 React docs 中默认为 true,我认为即使对于奇数值,它仍可能返回 true。我猜默认只有在没有指定任何条件时才适用。

如果不满足返回 true 的 if 条件并且没有提供其他条件,JavaScript 是否总是返回 false?

【问题讨论】:

标签: javascript reactjs if-statement


【解决方案1】:

如果不满足返回 true 的 if 条件并且没有提供其他条件,JavaScript 是否总是返回 false?

简短而直接的答案是。 JavaScript 值(甚至布尔值)可以评估为 truthyfalsy

说到这里,让我们试着分析一下你的组件方法中发生了什么。

  • 没有 return 语句的 JavaScript 函数计算结果为 undefined

  • shouldComponentUpdate 在 React 中需要一个布尔值。

  • 由于函数返回undefined,它被自动评估为一个falsy值。

  • 然后由于返回 falsy 值,组件没有更新。

我的建议:

控制您的代码。

避免此类意外行为,因为它可能会在未来版本的 React 中发生变化。

为什么不是ternary conditional?:

shouldComponentUpdate(nextProps, nextState) {
   return (nextProps.value % 2 == 0 ? true : false);
}

【讨论】:

    【解决方案2】:

    javascript 值总是“真”或“假”...此处不真情况下的返回类型是 void,即“假”,以及假、空、未定义(通过此函数分配的任何内容都将变为未定义在 false 的情况下),0 和空字符串。

    【讨论】:

      猜你喜欢
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 2019-07-01
      • 2019-03-05
      相关资源
      最近更新 更多