我正在学习React,遇到了事件处理程序。在React中,建议在将该函数this用作事件处理程序之前将其绑定到。但是,我没有绑定它,但仍获得所需的输出。下面是我的代码:
this
import React, { Component } from 'react'; class Experiment extends Component { constructor(props){ super(props); } clickEvent(e){ e.preventDefault(); document.getElementById('change').innerHTML="This text changed"; } render(){ return( <div> <p id='change'>This paragraph will change</p> <button onClick={this.clickEvent}>Press me</button> </div> ); } } export default Experiment;
如您所见,我尚未绑定clickEvent()到this,但该onClick事件运行顺利。这是为什么?我以为我会undefined出错或发生其他事情
clickEvent()
onClick
undefined
之所以起作用,是因为您没有在clickEvent函数中使用“ this”来引用任何内容。在javascript中,函数中的“ this”变量是指调用该函数的对象。
为了证明这一点,请尝试访问this.props或this.state,由于您缺少您的商品,它们将返回undefined.bind(this)
this.props
this.state
.bind(this)
.bind()将返回一个新函数,无论从何处调用它,该函数都将保留给定的“ this”上下文。
const myObj = { name: 'John', testFunction: function() { console.log(this.name); } }; const testFunction = myObj.testFunction; myObj.testFunction(); // John testFunction(); // undefined const testFunctionBound = testFunction.bind(myObj); testFunctionBound(); // John