首页 > 解决方案 > 为什么我需要将匿名函数传递给 onClick 事件?

问题描述

我一直在努力学习 React 的基础知识。但是,我在教程中遇到了要求我在alert()onClick 事件中放置一个这样的部分:

        <button className="square" onClick={() => {alert("click");}}>
            {this.state.value}
        </button>

我不明白为什么需要箭头功能 - 为什么我不能自己拥有 alert() ?

文档状态:

忘记 () => 并写 onClick={alert('click')} 是一个常见的错误,并且会在每次组件重新渲染时触发警报。

这是正确的-我已经尝试过了,它确实不断调用alert(). 但为什么?它不应该在点击时触发,而不是在渲染时触发吗?匿名函数做了什么来阻止这种行为?

标签: javascriptreactjs

解决方案


因为如果你调用一个函数,那么函数就会运行。(并且您从中获得返回值)

const onClick = alert("hello");
console.log(onClick);

如果你定义了一个调用函数 (Y) 的函数 (X),那么在你调用 X 之前它不会调用 Y。

const onClick = () => alert("hello");
console.log(onClick);


推荐阅读