ReactJS 中使用箭头函数或 onClick 函数有什么区别?

2024-01-08

我在 ReactJS 中构建了一个简单的计数器应用程序。代码如下。

import React, { useState } from "react";
import "./styles.css";

export default function App() {
    const [countNum, setCountNum] = useState(0);

    function increaseCount() {
        setCountNum(countNum + 1);
    }

    function decreaseCount() {
        if (countNum > 0) {
            setCountNum(countNum - 1);
        }
    }

    function disableChecker() {
        if (countNum === 0) {
            return true;
        } else {
            return false;
        }
    }

    return (
        <div className="App">
            <button onClick={() => decreaseCount()} disabled={disableChecker()}>Decrease</button>
            <button onClick={() => increaseCount()}>Increase</button>
            <h2>{countNum}</h2>
        </div>
    );
}

我只是想知道为什么onClick={() => increaseCount()} works以及为什么onClick={increaseCount()} or onClick={() => increaseCount} 不起作用?

我是初学者,请指导我找到答案。


onClick={() => increaseCount()}-> 分配一个函数作为事件处理程序onclick。该函数的主体有increaseCount()在里面。所以当该函数运行(在事件触发时),increaseCount is 执行/运行.

onClick={increaseCount()}-> 反应运行increaseCount一旦这个遇到代码. increaseCount更改状态并导致重新渲染,并且在下一个渲染周期中发生相同的事情导致周期。这应该有无限渲染。

onClick={() => increaseCount}-> 与第一个类似,但在函数体内,()之后失踪increaseCount. This 不执行该函数 increaseCount当事件发生时。函数名不带括号的简单语句不会执行任何操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ReactJS 中使用箭头函数或 onClick 函数有什么区别? 的相关文章

随机推荐

  • 有没有一种方法可以比较阿拉伯字符而不考虑它们的首/中/尾形式?

    在拉丁字母中 字母有大写和小写两种形式 在Python中 如果你想比较两个字符串而不考虑它们的大小写 你可以使用以下命令将它们转换为相同的大小写 string upper or string lower 在阿拉伯文字中 字母可以有词首 词尾
  • 聚合 MongoDB 中的不同值

    我有一个 mongodb 数据库 有 18625 个集合 它有以下键 id ObjectId 5aab14d2fc08b46adb79d99c game id NumberInt 4 score phrase Great title NHL
  • 长时间尝试语句

    将函数的大部分代码放在一个函数中是否有任何缺点 try statement 如果我做某事需要try statement 我通常最终会在 try 语句中为该函数做很多工作 因为我通常在那里声明我的变量 并且如果我这样做 就不能在该范围之外使用
  • 从 UART 接收的数据中获取子字符串并放入 LCD

    发布为基于的新问题this one https stackoverflow com questions 59559083 is there string in c OP 最初对已回滚的问题进行了巨大更改 因为用户表示他们无法自己提出问题 A
  • Python 与 Ruby 进行元编程 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在导入模块期间访问 PrivateData

    我想加载 config xml 文件的内容并将其存储在 PrivateData当我的模块加载时 这是我的 PSD1 中的定义行 Private data to pass to the module specified in ModuleTo
  • 使用 WPF shell 集成库最大化时窗口超出屏幕

    我正在使用WPF Shell 集成库 http code msdn microsoft com WPFShell创建我的 wpf 应用程序的自定义 chrome 一切都很好 但是当最大化应用程序时 屏幕外会出现 6 或 7 个像素 这是我正
  • 是否有 link.exe 的替代链接器?

    我正在开发一个代理 DLL 并希望导出其中包含 字符的符号 然而 这个字符似乎对 link exe 有特殊含义 我猜实际上是对 lib exe 给定一个 C 文件 extern C void f I can创建一个导出的 DLLf as f
  • 复杂表达式中的后缀增量运算符究竟何时计算?

    说我有这样的表情 short v p i 0xFF lt lt 4 p i 0xF0000000 gt gt 28 with p是一个指向动态分配的 32 位整数数组的指针 When exactly will i会增加吗 我注意到上面的代码
  • 克隆 JavaScript 事件对象

    有人知道如何对本机 javascript 事件对象进行深度复制 克隆吗 我知道我可以创建一个新的事件对象并手动设置适当的属性以匹配原始事件 但如果有一种方法可以克隆 那就容易多了 上面的代码不会正确复制任何 getter setter 尝试
  • 如何在c中模拟闭包

    有简单的方法吗 这是一个相当广泛的问题 从根本上讲 闭包是一个指令指针以及一些以正确方式执行指令所需的存储上下文 您当然可以在 C 中使用结构体和函数指针将类似的东西组合在一起 假设您表达一个接受两个 int 并返回 void 作为结构的闭
  • 未找到“默认”的 Docker 端点

    我确实克隆了一个项目 并且在第一步中 当我尝试启动容器时 我在项目根目录中运行了 windows CMD 然后输入以下命令 docker compose up build 并向我显示此消息 找不到 默认 的 docker 端点 如果有人帮助
  • 使用 df.to_csv() 的编码错误

    我正在尝试将 Twits 中的信息 屏幕名称 创建位置和文本 保存到 pandas DataFrame 中 然后将 DataFrame 保存为 csv 文件 我收到编码错误 import tweepy from tweepy import
  • pandas 数据帧上的矢量化查找

    我有两个 DataFrame df1是一个表 我需要使用从 df2 中的多个列检索的索引 列对来提取值 我看到有一个函数get value当给定索引和列值时 它可以完美地工作 但是当尝试向量化此函数以创建新列时 我失败了 df1 pd Da
  • 如何将我的 Android 应用程序 Google 地图半径圆替换为如图所示的蓝色半透明圆?

    如何将我的 Android 应用程序 Google 地图半径圆替换为蓝色半透明圆 如图所示 还有带有蓝色圆的蓝色标记 我可以使圆圈具有特定的轮廓并填充 但它看起来并不像下图所示的那么好 我怎么做 到目前为止我的代码也在下面 Code pri
  • VS 2012 发布:找不到有效的 AspnetMergePath

    我刚刚安装了 Visual Studio 2012 的 Update 2 它引入了一个新的 发布 对话框 我试图让它做以前做的事情 在发布之前预编译网站 但我遇到了错误 Can t find the valid AspnetMergePat
  • Android M startActivity电池优化

    我正在开发一个应用程序 如果用户靠近某个地方 它应该提醒用户 当然 如果手机处于空闲状态 也必须这样做 现在有了 DOZE 我明白我必须将我的应用程序列入白名单 并且为了做到这一点 我看到我可以通过操作请求启动一个意图 这要归功于 Budd
  • 在 Selenium 中为 Chrome 驱动程序设置代理

    我正在使用 Selenium Webdriver 在 Chrome 浏览器中使用 C 进行自动化 我需要检查我的网页是否在某些地区 某些 IP 范围 被阻止 所以我必须在 Chrome 浏览器中设置代理 我尝试了下面的代码 正在设置代理 但
  • iOS UIActionSheet 从按钮上的长按手势呈现,错误地需要双击按钮才能关闭

    我有一个选项卡栏应用程序 在其中一个选项卡中我有一个 MKMapView 在此视图中 我的 viewDidLoad 正在初始化 UIButton 的长按手势识别器 当按下此按钮并帮助时 它会显示一个包含 5 个按钮 取消按钮的 UIActi
  • ReactJS 中使用箭头函数或 onClick 函数有什么区别?

    我在 ReactJS 中构建了一个简单的计数器应用程序 代码如下 import React useState from react import styles css export default function App const co