Javascript 为什么反应';s onClick函数是否需要唯一语法?与其他事件触发器相比?

Javascript 为什么反应';s onClick函数是否需要唯一语法?与其他事件触发器相比?,javascript,reactjs,Javascript,Reactjs,我开始注意到一种不寻常的模式。任何onClick事件都要求语法为 onClick={()=>«函数名»}。 我也花了时间研究为什么onClick似乎是唯一需要偏执的事件处理程序,但我能找到的只是解释该做什么的文章,而不是它为什么这样工作的文章。OnChange和其他事件不需要相同的语法,但它们都是事件类型。欢迎提供所有建议和解释。onClick不需要“括号”。这是一个箭头函数,它是将事件处理程序传递给组件的几种方法之一 这是一种方式: onClick={this.nameOfFunction}

我开始注意到一种不寻常的模式。任何onClick事件都要求语法为
onClick={()=>«函数名»}
。 我也花了时间研究为什么onClick似乎是唯一需要偏执的事件处理程序,但我能找到的只是解释该做什么的文章,而不是它为什么这样工作的文章。OnChange和其他事件不需要相同的语法,但它们都是事件类型。欢迎提供所有建议和解释。

onClick不需要“括号”。这是一个箭头函数,它是将事件处理程序传递给组件的几种方法之一

这是一种方式:

onClick={this.nameOfFunction} // In this case, you need to bind the this in the constructor.
这是另一种方式:

onClick={this.nameOfFunction.bind(this)} 
这是另一个:

onClick={() => this.nameOfFunction()}
但是,正如文档所说:“在渲染中使用箭头函数会在组件每次渲染时创建一个新函数,这可能会影响性能(请参见下文)。”

onClick不需要“括号”。这是一个箭头函数,它是将事件处理程序传递给组件的几种方法之一

这是一种方式:

onClick={this.nameOfFunction} // In this case, you need to bind the this in the constructor.
这是另一种方式:

onClick={this.nameOfFunction.bind(this)} 
这是另一个:

onClick={() => this.nameOfFunction()}

但是,正如文档所说:“在渲染中使用箭头函数会在组件每次渲染时创建一个新函数,这可能会影响性能(见下文)。”

通常,当涉及到反应组件时,函数可能会使用
this.setState
方法,甚至访问组件道具(例如:
this.props
),因此方法需要使用正确的
this
关键字(动态绑定)

箭头函数非常适合此用途,它们提供了很好的语法和语法,这意味着它们内部使用的
this
与父
this
相同

因此,当您需要向组件传递事件处理程序而不更改
关键字的含义时,您可以执行以下操作:

将事件处理程序定义为
箭头函数
使用
箭头函数包装事件处理程序
使用
函数.prototype.bind
方法
注意:重要的一点是,如果要将事件处理程序传递给
onClick
,它应该是一个引用,否则每次呈现组件时都会执行事件处理程序

通常,当涉及到反应组件时,函数可能使用de>this.setState
方法,甚至访问组件道具(例如:
this.props
),因此方法需要使用正确的
this
关键字(动态绑定)

箭头函数非常适合此用途,它们提供了很好的语法和语法,这意味着它们内部使用的
this
与父
this
相同

因此,当您需要向组件传递事件处理程序而不更改
关键字的含义时,您可以执行以下操作:

将事件处理程序定义为
箭头函数
使用
箭头函数包装事件处理程序
使用
函数.prototype.bind
方法
注意:重要的一点是,如果要将事件处理程序传递给
onClick
,它应该是一个引用,否则每次呈现组件时都会执行事件处理程序

,我认为掌握JavaScrip中所有不同的函数类型是一个很好的选择t、 我理解范围,但我不明白为什么onClick总是在不包含括号的情况下运行。其他事件,如onChange不需要括号,但onClick需要括号。但是,是什么使onClick需要括号?我不确定我是否理解。如果函数绑定正确,或者是箭头函数,则可以编写
onChange={myFunction}
onClick={myFunction}
一样。诸如
onClick
onChange
等事件处理程序都需要对函数进行引用。如果该引用是您在行中创建的箭头函数(如您所描述的),则无所谓或者,如果它是一个变量,这就是你要问的吗?我认为掌握JavaScript中所有不同的函数类型是一个很好的阅读方法。我理解范围,但我不理解为什么onClick在不包含括号的情况下一直运行。其他事件,如onChange不需要括号,但onClick需要。但是,什么呢使onClick需要paradensis?我不确定我是否理解。如果函数绑定正确,或者是箭头函数,那么您可以编写
onChange={myFunction}
以及
onClick={myFunction}
。诸如
onClick
onChange
等事件处理程序需要提供对函数的引用。不管该引用是一个内嵌创建的箭头函数(如您所述)还是一个变量,这都是您要问的问题吗?