我的React组件中有默认道具:
1 5
2 6
3 7
但是当我将PropertyTitleLabel.defaultProps = {
bedrooms: 1,
propertyType: 'flat'
};
PropertyTitleLabel.propTypes = {
bedrooms: PropTypes.number,
propertyType: PropTypes.string
};
传递给null
时:
bedrooms
它没有被默认道具取代:(任何想法?
答案 0 :(得分:40)
您可以将null
值更改为undefined
以使用默认值。
<Component bedrooms={bedrooms || undefined} />
答案 1 :(得分:12)
我认为在处理null
时,undefined
和defaultProps
之间存在区别。 null
值可能是预期的行为,因此不会被默认值替换,而undefined
则不会被替换。
如文档中所述
[...]用于确保this.props.value具有一个值,如果父组件未指定它。
答案 2 :(得分:0)
undefined
=无。null
=暗示“无”的东西。 undefined
实际上不存在。 null
确实存在。这意味着undefined
不会传递prop值,因为您不能传递不存在的东西。由于null
并非虚无,而是仅暗示无所作为的事物,因此它会传递道具。