React组件似乎改变了DOM事件处理程序中分配this
的方式,但我找不到任何详细说明此行为的文档.
例如,当将对象的方法作为DOM事件处理程序与vanilla JS一起使用时,this
上下文仍然作为对象:
function SomeClass() {}
SomeClass.prototype.showThis = function() { console.log(this) };
let o = new SomeClass();
<button onclick="o.showThis()">Show "this"</button>
但是,React会更改此行为,使this
上下文变得未定义:
function SomeClass() {}
SomeClass.prototype.showThis = function() { console.log(this) };
let o = new SomeClass();
function App() {
return (
<button onClick={o.showThis}>Show this</button>
);
}
ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
解释这一点的文档在哪里?(我可以猜测为什么会发生这种情况,但我想知道React文档中涉及到了什么.)