2016-01-15 21 views
10

我在我的阵营组件默认道具:React.js - 默认道具不与`null`用于传递

PropertyTitleLabel.defaultProps = { 
    bedrooms: 1, 
    propertyType: 'flat' 
}; 
PropertyTitleLabel.propTypes = { 
    bedrooms: PropTypes.number, 
    propertyType: PropTypes.string 
}; 

但是,当我路过nullbedrooms这样的:

const bedrooms = null; // in real world API returns `null` 
<Component bedrooms={bedrooms} /> 

它不使用默认的道具:(任何想法取代?

回答

21

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

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

或者使用这个mixin的:https://github.com/jarsbe/null-default-props

+0

作为可能在这里登陆的其他人的帮手,请不要使用mixins。 @jagsler我希望你可以考虑更新你的原始答案。 https://reactjs.org/blog/2016/07/13/mixins-considered-harmful.html – brianespinosa

5

我觉得有nullundefineddefaultProps打交道时即发之间的区别。 null值可能是预期行为,因此不会被您的默认值取代,而undefined不会被替换。

如在文档

表示[...]用于确保如果不是由父组件指定它this.props.value将有一个值。

这是related issue