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

时间:2015-02-24 16:58:38

标签: javascript reactjs

由于getDefaultProps没有引用组件实例,所以看起来你不需要一个函数(例如,因为不需要重新绑定this)和一个普通的旧对象会工作得很好。在那里使用函数的优点是什么,为什么不同的情况适用于propTypes

1 个答案:

答案 0 :(得分:1)

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

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

这有助于确保正确使用组件。如果为prop提供了无效值,则会在JavaScript控制台中显示警告。

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

<强>为什么
我相信getDefaultProps()的优点或原因是一个函数,因此可以缓存它以避免在下次使用该组件时重新计算。