反应按钮的 onClick 属性:

2023-12-22

(1) 和 (2) 有什么区别React?

onClick={()=>handleDelete(id)} -------(1)

onClick={handleDelete(id)} ----------(2)

为什么(2)会导致无限循环,而(1)却工作得很好?

我找不到任何关于 React 中 onClick 只能接受函数的文档。我也有点困惑 Html 和 JS onClick 属性与 React 有何不同,因此任何文档链接也将受到高度赞赏。

有问题的代码片段:

<button
    className="btn btn--danger"
    onClick={()=>handleDelete(id)}
>
    Delete
</button>

提前致谢!


花括号中的内容就是返回给侦听者的内容。听者期待着function当事件被触发时将被调用。

  1. onClick={handleDelete(id)}

这不起作用,因为你正在打电话handleDelete 立即地并将调用该函数的结果分配给侦听器。该函数可能返回一个显式值或undefined(注意:该显式值可能是 anew可以分配给侦听器的函数(闭包) - 但在这种情况下我怀疑这种情况正在发生)。

  1. onClick={() => handleDelete(id)}

这将起作用,因为您将一个函数分配给侦听器,并且当事件被触发时,它将调用该函数,而该函数又将调用handleDelete(id).

  1. onClick={handleDelete}

这也将起作用,因为你正在传递一个参考 to the handleDelete函数传递给监听器,当事件被触发时,该函数将被调用。

(注意:这样做意味着需要重写该组件才能具有data-id该函数可以拾取的属性,因为您不再发送显式id论证handleDelete当你调用它时。)

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

反应按钮的 onClick 属性: 的相关文章

随机推荐

  • 带有 AdMob 的 Google Play 服务。检查可用性?

    我正在从 AdMob SDK 迁移到 Google Play 服务 我已经完成了大部分工作 并且一切似乎都运行良好 但我不确定我是否理解某些交互背后的逻辑 我所做的更改可以在这里找到 Google Play 服务迁移 https devel
  • 如何找到最近的事件元素

    我正在使用 jQuery 我想找到最近的班级 hidebox到创建事件的元素 我尝试使用parent find and closest但它们都指的是我的元素所在的级别 我只是寻找最近的 hidebox我可以找到我的事件元素的类 tr td
  • 如何使用 Notepad++ 正则表达式搜索来匹配 HTML 属性?

    这是我的文字 span class c1 Testing this string span 我想以这样的方式结束 span Testing this string span 所以我尝试在 Notepad 中使用这个正则表达式来替换任何内容
  • mv 等效 rsync 命令 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在尝试将文件夹移动到另一个文件夹使用命令行 如果已经存在则覆盖 但在使用 mv 时出现错误 是目录 example mv src test des
  • 标识符指的是组件的私有成员

    html
  • TCP 连接的可靠性如何?

    我已经编写了服务器 客户端应用程序 服务器是用c 编写的 客户端代码是使用java编写的 通信协议是TCP 使用 tcp 传输文件时 可能会发送丢失的数据 换句话说 tcp 是否保证数据正确到达 我是否应该发送该文件的标头信息以检查错误 例
  • Django:如何对更新视图/表单进行单元测试

    我正在尝试对我的更新表单和视图进行单元测试 我使用 Django Crispy Forms 来创建和更新表单 UpdateForm 继承了 CreateForm 并对提交按钮文本做了一些小改动 CreateView 和UpdateView
  • PHP:启动 PayPal 结帐的简单方法?

    我有功能齐全的购物车解决方案 我想要的只是我实际传递产品名称 总数 退货地址和我的贝宝地址的代码 以便它可以将我引导到购物车 有人能引导我走向正确的方向吗 PayPal 有上百万个不同的版本 我了解到我需要的是 paypal 网站付款 有人
  • TCP流回放工具

    我正在寻找一种用于记录和重放 TCP 流一侧以进行测试的工具 我看到记录整个 TCP 流 服务器和客户端 用于测试防火墙等的工具 但我正在寻找的是一种工具 它仅记录客户端提交的流量 带有计时信息 然后重新提交到服务器进行测试 由于 TCP
  • Django - Crispy Forms - 自定义输入定位和内联单选按钮

    我不久前一直在使用 django crispy forms 并我想知道是否有一种方法可以设置输入的位置 例如col md XX类或其他东西 使其看起来更好 而不仅仅是字段列表 这是一个例子 This is a normal render o
  • Neo4j 浏览器无法在 Google Chrome 中运行

    在 MacOS Yosemite 10 10 3 中升级到最新的 XCode Command Tools 后 无法使用 Chrome 版本 42 0 2311 90 64 位 作为 neo4j 浏览器客户端 不过 Safari 运行良好 有
  • 高效的纯文本模板引擎

    我有一个简单的警报系统 可以抓取网络上的号码 将它们与预定义的文本模板混合以获取警报 并将其发送给客户 警报是非常简单的纯文本 所以除了纯文本 数字 简单函数 例如 ifthenelse 之外 我不会期望太多 越快越好 那么有没有现成的开源
  • 使用 realloc 调整缓冲区大小

    如果指向的区域被移动 则会出现 free ptr 已完成 您能解释一下上面的内容吗realloc 此行来自 calloc malloc realloc 和 free 的手册页 我认为这更好地解释了这一点 如果没有足够的空间 扩展当前块 当前
  • 暂停NS操作

    I have NSOperationQueue和一些NSOperations in it NSInvocationOperations 尤其 此操作会进行一些计算并相应地更改 UI 元素的状态 当然 通过performSelectorOnM
  • 如何在我的用户名中使用带有 @ 符号的 linux 命令行 ftp? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我的用户名有一个时 如何在 Linux 命令行上运行它 中间签个字 ftp u user password host destinati
  • 这个生产者-消费者实现中是否存在竞争条件?

    在 操作系统概念 Silberschatz 第 9 版 的 3 4 1 节中 作者提出了生产者 消费者问题 并给出了以下使用循环缓冲区的实现 第 125 126 页 Shared variables define BUFFER SIZE 1
  • Rails 4从数据库填充下拉值

    我有一个 Rails 形式的下拉菜单 这工作正常 但我怎样才能使它动态 与模型数据交互 我有一个控制器 其操作包含 list List all 我怎样才能填充id and name in my combobox 我一直在四处寻找 但我不清楚
  • 从 PHP 匿名函数访问变量

    我有以下带有静态变量的类 如何从匿名 PHP 函数中访问类的静态函数 class MyClass public static function MyFunction mylocalparam MyStaticClass MyStaticMe
  • 如何修复“java.sql.SQLSyntaxErrorException:'字段列表'中的未知列'product0_.return_policy'”异常?

    当我尝试在浏览器上运行 URL 时 我收到此 SQLSyntaxErrorException 字段列表 中的未知列 product0 return policy GET一切products 看这里 https i stack imgur c
  • 反应按钮的 onClick 属性:

    1 和 2 有什么区别React onClick gt handleDelete id 1 onClick handleDelete id 2 为什么 2 会导致无限循环 而 1 却工作得很好 我找不到任何关于 React 中 onClic