React defaultProps null vs undefined

Posted

技术标签:

【中文标题】React defaultProps null vs undefined【英文标题】: 【发布时间】:2020-06-22 03:57:51 【问题描述】:

假设我们有一个名为 Button 的组件和一个名为 classN 的属性,这不是必需的。

Button.propTypes = 
  classN: PropTypes.string,
;

将该属性的 defaultProps 定义为 null 或 undefined 有什么区别?

Button.defaultProps = 
  classN: undefined,

VS

Button.defaultProps = 
  classN: null,

【问题讨论】:

你试过了吗? 除了一个为空,另一个为未定义外,没有区别。 这取决于您想如何使用该道具。 是的,我已经尝试过了,但没有发现差异,但是这两个选项可能会导致应用程序的行为不同。 这是添加到您帖子中的有用信息。它表明您已尝试自己找到答案,并阐明了您到底在寻找什么。 【参考方案1】:

@fjplaurr 我需要回答,因为我没有资格发表评论。 默认情况下,属性是未定义的。所以这一切都取决于你如何在代码中使用属性。 如果您检查一个属性是否未定义,那么您将进行不同的检查,如果是空检查,则会说 if property!=null。 我相信 Should I set default react properties to null 可能有助于在两者之间选择最好的。

【讨论】:

【参考方案2】:

null 值设置为 props 可以是有意的,并用于指示生命周期逻辑。添加到@hemant-kumar 的评论中,默认道具默认为undefined,可用于指示尚未设置但将要设置的值。

见this question

【讨论】:

以上是关于React defaultProps null vs undefined的主要内容,如果未能解决你的问题,请参考以下文章

React - 解构时的 defaultProps 与 ES6 默认参数(性能问题)

Typescript React 空函数作为 defaultProps

可以将 propTypes 和 defaultProps 作为静态 props 放在 React 类中吗?

React - 即使定义了 defaultProps,TypeScript 也会将 undefined 添加到 prop

TypeScript 3.0下react默认属性DefaultProps解决方案

Typescript 和 React defaultProps 仍被视为可能未定义