javascript - 为什么我需要将匿名函数传递给 onClick 事件?
问题描述
我一直在努力学习 React 的基础知识。但是,我在教程中遇到了要求我在alert()
onClick 事件中放置一个这样的部分:
<button className="square" onClick={() => {alert("click");}}>
{this.state.value}
</button>
我不明白为什么需要箭头功能 - 为什么我不能自己拥有 alert() ?
文档状态:
忘记 () => 并写 onClick={alert('click')} 是一个常见的错误,并且会在每次组件重新渲染时触发警报。
这是正确的-我已经尝试过了,它确实不断调用alert()
. 但为什么?它不应该在点击时触发,而不是在渲染时触发吗?匿名函数做了什么来阻止这种行为?
解决方案
因为如果你调用一个函数,那么函数就会运行。(并且您从中获得返回值)
const onClick = alert("hello");
console.log(onClick);
如果你定义了一个调用函数 (Y) 的函数 (X),那么在你调用 X 之前它不会调用 Y。
const onClick = () => alert("hello");
console.log(onClick);
推荐阅读
- amazon-web-services - 无法使用 AWS codepipeline 部署 github 示例代码
- filesystems - 为什么 QNX 2 分区是非 QNX 分区的示例?
- azure - 移入网络安全组的 Azure 函数变空
- powershell - 将 x509 证书重新分发到不同的商店
- java - 如何从多对多获取数据或查询?
- python - 为什么 time.asctime(time.gmtime()) 忽略 GMT?
- xcode - 在 Xcode 10.1 上运行 iOS 12.3.1 模拟器
- rest - 当我们检查接收时间更长时,带有 $search 过滤器的 Microsoft Graph 邮件 API 不起作用
- html - ConvertTo-HTML 从 PSObject 输出 System.Object[]
- jenkins - 使用 JsonBuilder 的 toPrettyString 时出现 StackOverflowError