Javascript 反应绑定事件
为什么我必须绑定onClick方法? 在这种情况下,“this”指的是App类、render方法还是DOM元素Javascript 反应绑定事件,javascript,reactjs,bind,Javascript,Reactjs,Bind,为什么我必须绑定onClick方法? 在这种情况下,“this”指的是App类、render方法还是DOM元素 此是本例中的应用程序实例 至于它的功能,文档对它进行了很好的描述: bind()方法创建一个新函数,该函数在调用时将其this关键字设置为提供的值[…] 如果我们没有将this(App实例)绑定到处理程序函数,那么当触发handleChange时,该函数内部的this将是包含onChange事件处理程序的元素 通过使用bind,我们强制this成为handleChange事件处理程序中
此
是本例中的应用程序
实例
至于它的功能,文档对它进行了很好的描述:
bind()方法创建一个新函数,该函数在调用时将其this关键字设置为提供的值[…]
如果我们没有将this
(App
实例)绑定到处理程序函数,那么当触发handleChange
时,该函数内部的this
将是包含onChange
事件处理程序的
元素
通过使用
bind
,我们强制this
成为handleChange
事件处理程序中的App
实例。不使用bind方式调用函数将其上下文(this)设置为JavaScript操作环境的全局变量。在浏览器中,它是一个窗口全局变量
bind
只是核心javascript。这就是绑定事件的工作方式。这不是一个概念
您可以在构造函数本身中绑定函数,而不是在事件处理程序中绑定函数
constructor(props) {
super(props);
this.handleChange= this.handleChange.bind(this);
}
您需要绑定onClick,因为如果不绑定onClick,那么它将引用全局对象 另一方面,如果onClick是在任何html标记中定义的,比如 Select也被认为是reactjs中的一个元素,它提供了自己的这个,onClick事件与之绑定 因此,如果您没有将事件绑定到本地的选择,那么它将抛出一个错误 typeError:未定义函数 所以装订是修补的 如果要从中返回任何内容,请在类似
this.state.something.map(function(holidays,i) {
return
<div>
<Select onClick="this.function"/>
</div>
}, this)
this.state.something.map(函数(节假日,i){
返回
},本页)
UpES6您可以这样更改函数“handleChange”:
handleChange = () => {
this.setState ({checked: !this.state.checked});
}
现在可以调用此函数:
onChange={this.handleChange}
。希望会帮助你:)绑定上下文可能会让人困惑,尤其是对于新手。我建议您改用箭头函数,它包含正确的上下文。感谢Alireza更新我的答案^^。我是堆栈溢出的新手:D