javascript - f() 和 ()=>f() 的区别

标签 javascript reactjs

在使用 ReactJS 在 javascript 中进行事件处理时,我对此感到困惑。

有什么区别

<button onClick={f()} />

<button onClick={()=>f()} />

我所知道的是第二个是返回 f() 的包装函数,但我看不出那里到底发生了什么变化。我确实在其他人的代码中看到了它们。

最佳答案

在您的示例中,第一种情况仅调用 f在加载时,这可能不是你想要的,除非 f返回另一个函数(当点击事件发生时会被调用)。第二个只是一个匿名函数包装 f这样f直到 click 才被调用事件发生。

为什么第二种表示法有用?

如果f不带参数然后使用

<button onClick={ f } /> // note: no parentheses

<button onClick={ () => f() } />

几乎是等价的。两者之间的细微差别在于 event传递给 f在第一种情况下,而不是在第二种情况下。技术上<button onClick={ event => f(event) }/>将等同于第一种情况,但这有点离题。

但是,如果 f确实需要一些参数(除了 event 本身),那么使用它很有用:

<button onClick={ () => f(someValue) } />

所以someValue可以传递给f当点击事件发生时。

关于javascript - f() 和 ()=>f() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53200435/

相关文章:

javascript - 字符串格式的 vis.js 轴值标签

javascript - Reactjs/Javascript 更新对象键名

javascript - React Navigation : Navigate Back To Root using NavigationActions. 重置、goBack 和 getStateForAction

javascript - 类型错误 : Cannot read properties of undefined (reading 'prototype' ) React Typescript + Express

javascript - 如何在特定元素的上下文中在 Jest 测试中进行查询?

javascript - AngularJS 过滤器不适用于 $scope 变量

javascript - 哪些 SVG 属性可以使用 CSS(3) 进行操作?

JavaScript 从数组中删除值

Javascript小数比较

html - 如何从通配符路由重定向到主页?