Update for React 0.13 and newer
Component._owner
在React 0.13中被弃用,而_currentElement
在this._reactInternalInstance
中不再作为密钥存在.因此,使用下面的解决方案.
另一种 Select 是,从2016年开始.
你已经认识到,这几乎不是一件好事,但我在这里重复这一点,供那些不太了解这个问题的人使用:this is generally an improper way to get things done in React.
public API中没有任何东西可以让你得到你想要的.您可能可以使用React内部代码来实现这一点,但因为它是一个私有API,所以在any time.时很容易崩溃
我重复一遍:几乎可以肯定的是,您不应该在任何类型的生产代码中使用它.
也就是说,可以使用this. _reactInternalInstance
获取当前组件的内部实例.在这里,您可以通过_currentElement
属性访问元素,然后通过_owner._instance
访问owner实例.
下面是一个例子:
var Parent = React.createClass({
render() {
return <Child v="test" />;
},
doAThing() {
console.log("I'm the parent, doing a thing.", this.props.testing);
}
});
var Child = React.createClass({
render() {
return <button onClick={this.onClick}>{this.props.v}</button>
},
onClick() {
var parent = this._reactInternalInstance._currentElement._owner._instance;
console.log("parent:", parent);
parent.doAThing();
}
});
ReactDOM.render(<Parent testing={true} />, container);
这里是a working JSFiddle example:http://jsfiddle.net/BinaryMuse/j8uaq85e/