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

IT技术 javascript reactjs components
2021-05-10 06:48:20

我的 React 组件中有默认props:

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} />

它没有被默认props取代:(有什么想法吗?

3个回答

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

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

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

如文档中所述

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

这是一个相关的问题

  • undefined= 没什么。
  • null= 暗示“什么都没有”的东西。

undefined现实中不存在。null然而确实存在。这意味着 undefined不会传递 prop 值,因为您不能传递不存在的东西。由于null不是什么都没有,而是只是暗示什么都没有的东西,所以它传入了props。