我正在尝试添加一个依赖于其他属性的属性,这些属性基本上将由组件的所有者组件传递。
所以我就这么做了:
propTypes: {
user: React.PropTypes.object,
comment: React.PropTypes.object
},
getDefaultProps: function() {
return {
admire: new Admire({
user: this.props.user,
comment:this.props.comment
})
};
}
但在getDefaultProps
调用时,似乎无法访问属性user
和comment
。
有没有办法定义一个依赖于从所有者组件传递过来的其他属性的默认属性?
发布于 2015-10-14 13:43:49
在创建任何实例之前都会调用getDefaultProps,因此不能依赖this.props
。它的目的是获得默认的道具,以防所有者没有通过它们。
另一种解决方案是使用getInitialState
,因为这将使您能够访问this.props.user
和this.props.comment
。
发布于 2015-10-14 13:31:14
你真的不应该像这样修改道具,我很确定你会收到一个关于这样做的警告。
您可能希望通过getInitialState
函数将Admire
存储到状态中。
例如。
propTypes: {
user: React.PropTypes.object,
comment: React.PropTypes.object
},
getInitialState: function() {
return {
admire: new Admire({
user: this.props.user,
comment: this.props.comment
});
};
}
https://stackoverflow.com/questions/33125985
复制相似问题