我可以省略此React生命周期方法的else return false
并仍然可以按需运行,返回奇数的false(value
从0开始递增1-参见freeCodeCamp {{3 }}中的其余代码),但是我不清楚为什么它会这样工作。
shouldComponentUpdate(nextProps, nextState) {
console.log('Should I update?');
if (nextProps.value % 2 == 0) return true;
}
由于shouldComponentUpdate
在每个React challenge中默认为true,所以我认为即使对于奇数值,它仍然可能返回true。我想默认值仅适用于未指定任何条件的情况。
如果不满足返回true的if条件,并且没有提供其他条件,那么JavaScript是否总是返回false?
答案 0 :(得分:2)
如果不满足返回true的if条件,并且没有提供其他条件,那么JavaScript是否总是返回false?
简略的答案是 否 。 JavaScript值(甚至是布尔值)可以评估为truthy或falsy。
这样,让我们尝试分析您的组件方法中正在发生的事情。
没有return
语句的JavaScript函数的求值为undefined
。
shouldComponentUpdate
需要一个布尔值。
由于函数返回了undefined
,因此该函数会自动评估为 falsy 值。
然后由于返回 falsy 值而未更新组件。
我的建议:
避免这种意外行为,因为它可能会在以后的React版本中更改。
为什么不是ternary conditional?:
shouldComponentUpdate(nextProps, nextState) {
return (nextProps.value % 2 == 0 ? true : false);
}
答案 1 :(得分:0)
javascript值始终是“真实的”或“虚假的” ...在不正确的情况下,返回类型为void,即“ falsey”,以及false,null和undefined(通过此函数分配的任何内容都将变为undefined) (在falsey情况下),0和空字符串。