2016-01-15 26 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