React:为什么 getDefaultProps 是一个方法而 propTypes 是一个普通对象?

React: why is getDefaultProps a method while propTypes is a plain object?

由于 getDefaultProps 不引用组件实例,因此您似乎不需要函数(例如,因为不需要重新绑定 this)和普通的旧对象可以正常工作。在那里使用函数有什么好处,为什么不适用于 propTypes?

propTypes
propTypes 是一个对象,因为它用于声明一个 prop 是一个特定的 JS 原语。例如:

React.createClass({
  propTypes: {
    optionalArray:  React.PropTypes.array,
    optionalBool:   React.PropTypes.bool,
    optionalFunc:   React.PropTypes.func
  }
});

这有助于确保正确使用组件。当为道具提供无效值时,JavaScript 控制台中将显示警告。

getDefaultProps()
getDefaultProps 用于定义 props 的默认值,并在创建 class 时调用一次并缓存。

为什么
我相信优势,或者更确切地说,getDefaultProps() 是一个函数,因此可以缓存它以避免下次使用该组件时重新计算。