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

Kos*_*ika 28 javascript components reactjs

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

PropertyTitleLabel.defaultProps = {
    bedrooms: 1,
    propertyType: 'flat'
};
PropertyTitleLabel.propTypes = {
    bedrooms: PropTypes.number,
    propertyType: PropTypes.string
};
Run Code Online (Sandbox Code Playgroud)

但是当我转过身nullbedrooms:

const bedrooms = null; // in real world API returns `null`
<Component bedrooms={bedrooms} />
Run Code Online (Sandbox Code Playgroud)

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

jag*_*ler 50

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

<Component bedrooms={bedrooms || undefined} />
Run Code Online (Sandbox Code Playgroud)

  • 作为可能登陆这里的其他人的帮助者,请不要使用 mixins。@jagsler我希望你可以考虑更新你原来的答案。https://reactjs.org/blog/2016/07/13/mixins-considered-harmful.html (2认同)

Bal*_*zar 14

我觉得有区别null,并undefined与打交道时即发defaultProps.该null值可能是预期的行为,因此不会被您的默认值替换,而undefined不会被替换.

正如文档中所述

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

这是一个相关问题.