【问题标题】:React.js - default prop is not used with `null` is passedReact.js - 默认 prop 不与 `null` 一起使用
【发布时间】:2016-04-20 22:26:56
【问题描述】:

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

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

但是当我将null 传递给bedrooms 时,就像:

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

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

【问题讨论】:

  • 另外,如果你使用一个不带PropTypes.exact的假值,那么默认的prop也不会被使用。

标签: javascript reactjs components


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

我认为nullundefined 在处理defaultProps 时存在区别。 null 值可能是预期行为,因此不会被您的默认值替换,而 undefined 不会被替换。

如文档中所述

[...] 用于确保 this.props.value 在父组件未指定的情况下会有一个值。

这是related issue

【讨论】:

    【解决方案3】:
    • undefined = 没有。
    • null = 暗示“无”的东西。

    undefined 在现实中并不存在。 null 但是确实存在。这意味着undefined 不会传递道具值,因为你不能传递不存在的东西。由于null 不是什么都不是,而是只是暗示什么,所以它传递了道具。

    【讨论】:

      猜你喜欢
      • 2021-04-24
      • 2018-06-20
      • 2011-01-08
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多