React.js - 默认prop不用于传递`null`

时间:2016-01-15 10:37:26

标签: javascript reactjs components

我的React组件中有默认道具:

1 5
2 6
3 7

但是当我将PropertyTitleLabel.defaultProps = { bedrooms: 1, propertyType: 'flat' }; PropertyTitleLabel.propTypes = { bedrooms: PropTypes.number, propertyType: PropTypes.string }; 传递给null时:

bedrooms

它没有被默认道具取代:(任何想法?

3 个答案:

答案 0 :(得分:40)

您可以将null值更改为undefined以使用默认值。

<Component bedrooms={bedrooms || undefined} />

答案 1 :(得分:12)

我认为在处理null时,undefineddefaultProps之间存在区别。 null值可能是预期的行为,因此不会被默认值替换,而undefined则不会被替换。

如文档中所述

  

[...]用于确保this.props.value具有一个值,如果父组件未指定它。

这是related issue

答案 2 :(得分:0)

  • undefined =无。
  • null =暗示“无”的东西。

undefined实际上不存在。 null确实存在。这意味着undefined不会传递prop值,因为您不能传递不存在的东西。由于null并非虚无,而是仅暗示无所作为的事物,因此它会传递道具。