我将整个父实例传递给道具中的子实例,如下所示:
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}>