Javascript 反应:为什么getDefaultProps是一个方法,而propTypes是一个普通对象?

Javascript 反应:为什么getDefaultProps是一个方法,而propTypes是一个普通对象?,javascript,reactjs,Javascript,Reactjs,由于getDefaultProps不引用组件实例,因此您似乎不需要函数(例如,不需要重新绑定this),一个普通的旧对象也可以正常工作。在那里使用函数有什么好处,为什么不适用于propTypes?propTypes propTypes是一个对象,因为它用于声明prop是一个特定的JS原语。例如: React.createClass({ propTypes: { optionalArray: React.PropTypes.array, optionalBool: Rea

由于
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
的默认值,并在创建类时调用一次并缓存

为什么

我相信它的优点,或者说原因是,
getDefaultProps()
是一个函数,它可以被缓存,以避免下次使用组件时重新计算。

Ah,函数缓存完全有意义。谢谢getDefaultProps的行为类似于静态单例方法,每次调用它时都返回一个可共享对象。静态,因为它在组件实例被创建之前被调用,Stutelon使它返回一个可共享的对象。请考虑使用EXMAXEXECUDEXTUPSP= {} < /Cord>语法代替EXECUTE > GETDebug ToPsP/<代码>方法。