javascript - 为什么在下面的代码片段中调用 'onClick' 的函数应该在另一个箭头函数中调用?

标签 javascript reactjs ecmascript-6

这是代码片段...

const CountClicks = () => {
    const [count, setCount] = useState(0);
    return(
        <div>
            <p>You clicked {count} times.</p>        
            <button onClick={() => {setCount(count + 1)}}>
                Click me
            </button>
        </div>
    );
}

我试过<button onClick={setCount(count + 1)}>这导致显示以下错误:

Uncaught Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.

最佳答案

分配给 onClick 的值必须是函数

onClick={setCount(count + 1)}立即调用 setCount 并将其返回值指定为在单击元素。

由于它不返回函数,因此单击它不会发生任何事情。

但是,它永远不会走到这一步,因为调用 setCount 会更改状态并触发重新渲染...调用 setCount 并触发重新渲染... ∞

关于javascript - 为什么在下面的代码片段中调用 'onClick' 的函数应该在另一个箭头函数中调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58645599/

相关文章:

javascript - Node.js 不支持 ES6 导入和导出

javascript - 当任何给定分隔符出现时分割 JavaScript 字符串

javascript - 删除计时器上动态添加的 div

javascript - 如何使用 react-router-dom V5 重定向登录页面

reactjs - 如何在ReactJS中设置路由?

node.js - 将可变数量的参数传递给 Node v4 中的父构造函数

javascript - setTimeout 有限制吗?

javascript - 需要帮助解决模式弹出问题吗?

reactjs - React/Typescript/VScode - 导入路径不能以 '.tsx' 扩展名结尾

javascript - es6类和express.js,如何传递类的实例以便每个路由都可以访问?