为什么在ReactJS中按钮的onClick事件中传递函数引用而不是方法?

2024-03-06

每当我在按钮的 onClick 中传递函数括号时,即使不单击按钮,它也会在页面加载时自动调用。 但是,当我不在按钮的 onClick 中传递函数括号时,它仅在单击按钮时调用。

在函数调用中传递括号

<button onClick={this.handleButtonClick()}>Increment</button>

函数调用时不带括号

<button onClick={this.handleButtonClick}>Increment</button>

为什么每当我将括号传递给函数时,函数就会在页面加载时自动调用,即使它写在按钮的 onClick 内部?


之间有一个区别函数调用 and a function.

当组件呈现时,将执行所有语句并计算表达式。这是普通的 javascript,这就是 javascript 的工作原理。

this.handleButtonClick()是一个函数call,因此一旦组件渲染就会调用该函数。我假设handleButtonClick()回报undefined这将导致按钮呈现为<Button onClick={undefined} />。现在,如果onClick is undefined,当点击实际发生时,不会发生任何事情,因为没有要调用的函数。

this.handleButtonClick只是一个参考对于一个函数,它不会调用它。您需要将函数引用传递给onClickprop 以便稍后在单击实际发生时由 React 调用它。

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

为什么在ReactJS中按钮的onClick事件中传递函数引用而不是方法? 的相关文章

  • 在 React 中使用 .less 文件

    我正在尝试将 less 文件与极简主义 React 应用程序一起使用 使用创建反应应用程序 我已经添加less and less loader to my 包 json以及我的模块规则webpack config js文件 然而 类引用并未
  • 如何包装内在组件,保留大部分 Props?

    我想用我自己的 React 功能组件包装一个标准按钮 但我希望新组件的用户能够设置 几乎所有底层按钮的道具 当然 我想保持正确的打字 所以如果 WrappedButton 包含一个button then
  • React Image:createObjectURL 链接给出错误 404(未找到)

    我在 React with Typescript 中使用以下代码创建了一个 ImageUrl 它创建了一个 URL 但不显示图片图像 单击 URL 例如 http localhost 3003 0b4de100 d8eb 49a7 b43a
  • Redux 减速器的副作用

    Redux 减速器应该没有副作用 但是 如果某个操作应该触发浏览器中文件的下载 其中内容基于商店的状态 该怎么办 这当然应该算作副作用吗 像下面这样的方法可以吗 还是我应该寻找替代方法 case SAVE GRID const json s
  • 我可以选择一种类型的所有 React 组件,而不为每个组件分配一个类吗?

    我这里有一个游乐场 https codesandbox io s 736v9vjzw1 https codesandbox io s 736v9vjzw1 const Something classes children variant g
  • 如何在没有引用的情况下复制对象?

    PHP5 OOP 有据可查对象通过引用传递 http php net manual en language oop5 references php默认情况下 如果这是默认的 在我看来 有一种非默认的方式可以在没有参考的情况下进行复制 如何
  • React 应用程序中未调用 Microsoft Graph Toolkit 组件的事件处理程序

    我正在尝试在我的 React 应用程序中使用 Microsoft Graph Toolkit 中的登录组件 它工作得很好 但我似乎无法让任何事件发生 例如 import React from react import MgtLogin Pr
  • 如何在 Gatsby 页面上包含本地 JavaScript?

    我是一个完全的 React 新手 我想这里有些基本的东西我不太明白 默认的 Gatsby 页面如下所示 有没有办法像这样使用本地 js 文件 我想要实现的是让反应忽略script js但仍然让客户端使用它 默认的 Gatsby 页面看起来像
  • Redux - 从函数调用操作

    我正在尝试从函数调用 redux 操作 我调用该函数的组件已连接到商店 但是 如果我通过以下操作 它就不起作用 function myFunc action action 有没有办法通过参数传递动作 谢谢 using bindActionC
  • 即使未显式使用“componentWillMount”,“componentWillMount”警告仍可见

    在我的代码中 我没有任何明确的用途componentWillMount 但我在运行时仍然看到一些警告webpack react dom development js 12386 警告 componentWillMount 已重命名 不建议使
  • 修改C中的const char *

    我正在练习面试 我目前遇到的问题是反转 C 中的常量字符串 我知道由于 str2 是 const 所以我可以修改 str2 指向的位置 但不能修改它的值 我下面有一个名为reverse const 的函数 它会将 const char st
  • 如何在 webpack 中渲染嵌套的 SASS?

    采取以下CSS MyComponent color blue Button color red 以及以下 React 组件 import React from react import classes from MyComponent sc
  • 在 javascript 文件中设置 firebase-admin sdk

    我的最终目标是使用用户 ID 获取用户电子邮件 到目前为止 我发现我需要使用 firebase admin SDK 现在我有这个代码 var admin require firebase admin var serviceAccount r
  • 在react-big-calendar中单击事件时添加弹出窗口?

    当单击事件时 我无法将弹出窗口添加到事件中 弹出窗口似乎只显示在事件槽中 而不是显示在事件槽的顶部 此外 由于我为事件创建了一个自定义组件并尝试在自定义组件中实现弹出窗口 因此只有当我单击事件名称时才会显示弹出窗口 这是代码 class C
  • 如何使用draft.js更改光标位置?

    我想知道在键盘命令上完成文本插入后如何更改 Draft js 中的光标位置 因此我目前正在使用 handleKeyCommand cmd 每当用户按下特定按钮时插入自定义文本块 接下来我尝试了以下操作 currentState this s
  • 可下载文件 - 盖茨比

    由于某种原因 尝试下载文件时失败 我尝试了几种不同的方法 但都失败了 我读过一些关于 pdf word 文件在盖茨比中被 禁止 的内容 默认 a href route to file a 好像不行 显示下载失败 任何帮助表示赞赏 See 将
  • 使用文本字段同时过滤react-table和react-leaflet标记(在表中显示过滤数据并在地图中显示标记)

    我是反应传单的新手 需要一点帮助来解决我的问题 跟进上一篇文章 https stackoverflow com questions 52557802 how to get the number of map markers per coun
  • 如何在 React 中测试表单提交?

    我有以下 React 组件 export default class SignUpForm extends React Component doSignupForm event Some API call render return div
  • React Native:加载图像后应用程序性能不佳

    加载图像似乎没有问题 但是加载完毕后就出现问题了 在我的应用程序中 我在整个游戏中一张一张地加载卡片图像 一旦我加载了 40 张卡片图像 整个应用程序就会变得很慢 它总是发生在第 40 个图像处 当我在第 40 个图像之后继续加载更多卡片图
  • 使用 Flask/WTForms 和 React 进行 CSRF 保护

    有没有人成功地为使用 React 作为受控组件 提交到 Flask 后端 最好使用 WTForms 的表单实现了 CSRF 保护 我看过很多部分答案 其中一个是关于 Django 的 但找不到任何关于 Flask 的明确答案 我的大问题似乎

随机推荐

  • 如何将 JSON 字符串转换为具有不同结构的 JSON 字符串

    我正在构建一个应用程序 其中数据以 JSON 字符串的形式从第三方系统检索 我需要将此 JSON 字符串转换为另一个具有不同结构的 JSON 字符串 以便它可以与内部 Javascript 库中定义的预先存在的函数一起使用 理想情况下 我希
  • ReactJS 中没有“Access-Control-Allow-Origin”

    我想知道如何在reactJS或react native环境中的axios post方法中设置Access Control Allow Origin 我使用 CORS 附加组件 它可以工作 但我也想在标头中设置它 我尝试了这些方法 但没有一个
  • 使用 Yeoman 生成器重复提示

    我正在创建一个 Yeoman Generator 来自动创建一些数据库表 我需要向用户提示添加多个列 下面的 ColumnName 和 DataType 的组合 我的磁盘中保存了一个模板 我在其中绑定用户输入的动态名称 并根据该模板 由 Y
  • OpenGL ES纹理问题,4个重复的列和水平线(Android)

    我有一个 RGB 或 RGBA 纹理图像缓冲区 我想使用以下代码将其显示在我的 Android 设备上 我使用 NDK 中的 OpenGL glTexImage2D GL TEXTURE 2D 0 GL RGBA 256 256 0 GL
  • C# MVVM 服务层位于何处?

    我正在尝试开发一个小程序 它将与串行端口上的设备进行通信 该程序将负责格式化用户输入的数据并读取和呈现设备接收到的值 我对 WPF 和 MVVM 还很陌生 并且已经对整个数据绑定 XAML 混乱有了基本的了解 我认为 目前我的理解是这样的
  • 如何将 git 补丁从一个存储库应用到另一个存储库?

    我有两个存储库 一个是库的主存储库 另一个是使用该库的项目 如果我对从属项目中进行修复 我想要一种简单的方法来将该补丁应用回上游 该文件在每个存储库中的位置都不同 主要仓库 www playdar org static playdar js
  • 如何在包装 Firebug(或类似)控制台 api 时访问行号

    我封装了控制台 API 以提供精细的日志记录级别以及一些其他糖功能 这工作正常 唯一的问题是 firebug 或任何其他控制台 将始终将日志来自的行号报告为调用控制台 API 本身的行 您建议我如何让控制台记录我调用包装函数的行号 我更喜欢
  • 修改函数中的对象时出现意外结果

    当我修改函数中的对象时 我得到了一个奇怪的结果 有趣的是 当我在浏览器控制台中执行相同的操作时 我得到了我所期望的结果 但在反应中它似乎不起作用这是代码 const makeChanges i gt i foo test i new i a
  • 为 UIView 子类加载 Nib 的正确方法

    我知道这个问题以前曾被问过 但答案是矛盾的 我很困惑 所以请不要攻击我 我想要一个可重复使用的UIView整个我的应用程序的子类 我想使用 nib 文件来描述界面 现在假设它是一个加载指示器视图 其中有一个活动指示器 我希望在某些事件中实例
  • GCD和回调-并发问题

    我注册了一个回调处理程序 用于侦听 iOS 地址簿中的更改 由于某些奇怪的原因 已提交错误 当应用程序从后台返回时 有时会多次调用此回调 我希望我的回调处理程序只运行一次逻辑 即使回调被多次调用 这就是我注册回调的方式 ABAddressB
  • 在经典 ASP 中使用 ODBC 连接器时,MySQL“max_execution_time”默认为 30000ms,并且无法更改

    这个问题已经困扰我几个月了 而且我还没有找到解决方案 默认max execution time在经典 ASP 应用程序中使用 MySQL ODBC 连接器 8 0 时 设置为 30000 毫秒 30 秒 但我不知道如何增加它 我有一个大表
  • 如何获取 Twitter 当前用户的性别

    我已经查看了 Twitter 文档 anywhere 我可以在其中使用用户对象属性 但在用户数据中我找不到性别属性 当您创建 Twitter 帐户时 它从不询问性别 因此您无法通过 API 获取性别 你需要某种人工智能来确定它
  • 将 Fig.legend 与 matplotlib 中的子图结合起来

    免责声明 我知道在这个简单的示例中使用子图是无关紧要的 后者仅用于显示我的问题 我希望能够使用fig legend with fig subfigures1 我目前正在探索新的子图 https matplotlib org stable g
  • Android如何通过复选框识别列表视图中的项目

    我真的被困在这里了 我想要的并不简单 对我来说 但是我已经编写 Android 一年了 我想要的是一个列表视图 每行都有一个图像视图 一个文本视图 一个复选框和另一个文本视图 让我们首先在布局中添加一个文本视图和一个复选框 基于this h
  • 如何包含 Angular 5 的 ag-grid 样式?

    我正在使用 Angular 5 和 ag grid 17 x 我只是尝试做一个简单的 hello world 类型的示例 但无法正确显示网格 我的模板中有以下 HTML div style width 100 height 500px cl
  • WebClient().DownloadString() 返回旧数据[重复]

    这个问题在这里已经有答案了 我正在使用此代码从 URL 获取返回字符串 webClient Encoding Encoding UTF8 response webClient DownloadString http somesite com
  • 如何删除 Grails 生成的 Content-Type 标头中的 charset=utf-8

    我正在尝试将 json 数据作为 grails 中的响应正文发送 我尝试使用以下方法将 Content Type 标头设置为 application json render status httpServletResponse text r
  • 如何在两个设备(android,iphone)之间传输“数据”?

    如何在两个设备之间传输数据 我想在不同平台 android iphone 之间传输数据 主要是图像文件 是否可以使用 p2p 或者我应该使用客户端服务器 任何帮助将不胜感激 你看过吗高通的 AllJoyn 库 https developer
  • 将 ffmpeg 应用于多个文件

    我写了一个简单的脚本 bin bash find name m4a while read filename do new filename echo filename sed s m4a 1flac g if f new filename
  • 为什么在ReactJS中按钮的onClick事件中传递函数引用而不是方法?

    每当我在按钮的 onClick 中传递函数括号时 即使不单击按钮 它也会在页面加载时自动调用 但是 当我不在按钮的 onClick 中传递函数括号时 它仅在单击按钮时调用 在函数调用中传递括号