Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应绑定事件_Javascript_Reactjs_Bind - Fatal编程技术网

Javascript 反应绑定事件

Javascript 反应绑定事件,javascript,reactjs,bind,Javascript,Reactjs,Bind,为什么我必须绑定onClick方法? 在这种情况下,“this”指的是App类、render方法还是DOM元素 此是本例中的应用程序实例 至于它的功能,文档对它进行了很好的描述: bind()方法创建一个新函数,该函数在调用时将其this关键字设置为提供的值[…] 如果我们没有将this(App实例)绑定到处理程序函数,那么当触发handleChange时,该函数内部的this将是包含onChange事件处理程序的元素 通过使用bind,我们强制this成为handleChange事件处理程序中

为什么我必须绑定onClick方法? 在这种情况下,“this”指的是App类、render方法还是DOM元素


是本例中的
应用程序
实例

至于它的功能,文档对它进行了很好的描述:

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