React 的 `getDefaultProps()` 中的 `this.props`?

IT技术 reactjs
2021-05-11 03:29:42

我正在尝试添加一个依赖于其他props的props,这些props基本上将由组件的所有者组件传递。

所以我做了:

propTypes: {
  user: React.PropTypes.object,
  comment: React.PropTypes.object
},

getDefaultProps: function() {
  return {
    admire: new Admire({
              user: this.props.user, 
              comment:this.props.comment
            })
  };
}

但它似乎是propsusercommentgetDefaultProps通话时无法访问

有什么方法可以定义依赖于将从所有者组件传递的其他props的默认props吗?

2个回答

在创建任何实例之前调用getDefaultProps,因此不能依赖this.props. 它旨在获取默认props,以防所有者未通过它们。

另一种解决方案是使用,getInitialState因为这将使您可以访问this.props.userthis.props.comment

你真的不应该像这样修改props,我很确定你会收到关于这样做的控制台警告。

您可能希望Admire通过getInitialState函数存储到状态

例如

propTypes: {
    user: React.PropTypes.object,
    comment: React.PropTypes.object
},
getInitialState: function() {
    return {
        admire: new Admire({
            user: this.props.user,
            comment: this.props.comment
        });
    };
}