React 0.13及更高版本的更新
Component._owner已在React
0.13中弃用,并且在中
_currentElement不再作为键存在
this._reactInternalInstance。因此,使用下面的解决方案throws
Uncaught TypeError: Cannot read property '_owner' of undefined。
从React 16开始,替代方案是
this._reactInternalFiber._debugOwner.stateNode。
您已经认识到这几乎总是一件不好的事情,但是对于那些不太了解这个问题的人,我在这里要重复一遍: 这通常是在React中完成事情的不正确方法。
公共 API中没有任何东西可以让您获得想要的东西。您可能可以使用React内部实现此目的,但是由于它是私有API,因此 随时 可能会中断
。
我再说一遍:您几乎应该肯定不应该在任何生产代码中使用它。
也就是说,您可以使用来获取当前组件的内部实例
this._reactInternalInstance。在此处,您可以通过
_currentElement属性访问元素,然后通过访问 所有者
实例
_owner._instance。
这是一个例子:
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);这是一个有效的JSFiddle示例:http
:
//jsfiddle.net/BinaryMuse/j8uaq85e/



