首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onClick={() => functionHere} vs onClick={functionHere}

onClick={() => functionHere} vs onClick={functionHere}
EN

Stack Overflow用户
提问于 2020-12-06 02:33:36
回答 2查看 95关注 0票数 0

简单问题:以下几个方面的主要区别是:

代码语言:javascript
复制
onClick = {() => functionHere}

以及:

代码语言:javascript
复制
onClick = {functionHere}

我真的很困惑,因为有时() =>可以工作,有时我需要删除它,并且只需要正确地使用functionHere。非常感谢!

编辑

functionHere是这样的:

代码语言:javascript
复制
const functionHere = () => {
    console.log("called")
    // some codes here
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-06 02:53:14

我相信这只是一个用语言思考你在做什么的问题。

想一想:functionHerefunctionHere()。有什么关系?没有括号,它是对函数的引用,而带括号的则是函数执行器。

现在,就像@merlin说的那样,如果您执行这个() => functionHere操作,您将声明一个返回引用的函数,而不是一个执行器(无论如何,这不应该是非常常见的)。在这种情况下,onClick将无法工作,因为执行器不会被调用。

更常见的是这个() => functionHere()。这将返回执行器,这意味着当调用onClick事件时,functionHere将实际运行(因为执行器)。

将引用直接传递到onClick可以工作,因为它构建来运行任何传递给它的函数。因此,传递引用总是有效的,传递返回引用的函数无效。看到了吗?

,如果您不需要控制传递给您的支持,只需使用引用即可。如果您想要控制道具,请使用箭头函数(name) => functionHere(name)

票数 2
EN

Stack Overflow用户

发布于 2020-12-06 02:41:58

() => functionHere在执行时返回函数functionHere,这意味着它与functionHere相同。

由于您没有执行它,所以在为没有键的对象分配值时,应该会引发语法错误。

为了避免不必要的函数执行,只需编写

代码语言:javascript
复制
onClick = {functionHere}

请注意,这是因为在ES6中引入了一个简写文字表示法,使其等价于

代码语言:javascript
复制
onClick = {funcitonHere: functionHere}

你应该检查一下关于箭头函数的MDN文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65164109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档