我试图添加一个依赖于其他道具的道具,这些道具将基本上由该组件的所有者组件传递。
所以我做了:
propTypes: {
user: React.PropTypes.object,
comment: React.PropTypes.object
},
getDefaultProps: function() {
return {
admire: new Admire({
user: this.props.user,
comment:this.props.comment
})
};
}
但似乎在user
来电时无法访问道具comment
和getDefaultProps
。
有没有办法定义一个默认道具,它取决于将从所有者组件传递的其他道具?
答案 0 :(得分:23)
getDefaultProps,因此不能依赖this.props
。它意味着获得默认道具,以防所有者未通过它们。
另一种解决方案是使用getInitialState
,因为这样您就可以访问this.props.user
和this.props.comment
。
答案 1 :(得分:2)
你不应该真的修改这样的道具,我相当肯定你会得到一个控制台警告这样做。
您可能希望通过Admire
功能将getInitialState
存储到州。
E.g。
propTypes: {
user: React.PropTypes.object,
comment: React.PropTypes.object
},
getInitialState: function() {
return {
admire: new Admire({
user: this.props.user,
comment: this.props.comment
});
};
}