React.js中的非原始默认道具?

时间:2015-10-23 23:36:00

标签: javascript properties reactjs default primitive

是否可以在React中为props指定非原始默认值,而不是在所有实例中共享?

the result of getDefaultProps() is cached and reused for all instances开始,指定非原始默认值不是一个安全的地方。

但是,组件不应该修改自己的props,例如在构造函数中的props上设置非原始值是禁忌。 (事实上​​,props是不可变的; React通过Object.preventExtensions来确保这一点。)

不确定如何实现这一目标......

1 个答案:

答案 0 :(得分:2)

props是不可变的。 getDefaultProps用于在创建时未指定组件时为组件提供prop值。 props可以是任何有效的javascript值,包括嵌套对象,只要它们不会更改

因为props是不可变的,所以默认道具会被缓存并在对象的所有实例之间共享。

对于在组件生命周期内发生变化的事物,您希望使用state。要指定组件状态的初始形状,您需要使用getInitialState()函数。该功能将提供this.props