是否可以将父实例传递给 props 属性中的子实例

  • 本文关键字:实例 props 属性 是否 reactjs
  • 更新时间 :
  • 英文 :


我将整个父实例传递给道具中的子实例,如下所示:

var Parent = React.createClass({
  render() {
      return <Child parent={this} />;
  },
doAThing() {
    console.log("Doing A Thing!");
  }
});
var Child = React.createClass({
  render() {
    return <button onClick={this.onClick}>Do A Thing...</button>
  },
  onClick() {
    let parent = this.props.parent
    parent.doAThing();
  }
});

工作正常,我只是想知道是否是好的做法,或者我是否应该避免它。

这不是一个好的做法,因为根据最小特权原则,孩子不应该知道父母的实现。当孩子应该做某事时,应该为其提供回调:

<Child onClick={() => this.doAThing()} />;

而且可以直接使用道具:

<button onClick={this.props.onClick}>

最新更新