在 React 中调用函数

2024-02-18

我是 React 的初学者,对于在 React 中调用函数有点困惑。

我看到了以下方法,但我不知道何时使用每种方法以及哪种方法。

  • handleAddTodo ={this.handleAddTodo}
  • handleAddTodo ={this.handleAddTodo()}
  • handleAddTodo ={handleAddTodo}
  • handleAddTodo ={this.handleAddTodo}
  • handleAddTodo ={handleAddTodo()}

这些可以互换吗?我可以像调用函数一样处理事件吗?


这些可以互换吗?

简短回答:不。


让我们看一下您发布的不同片段:

someFunction() vs someFunction

使用前一种语法,您实际上是在调用该函数。后者只是对该函数的引用。那么我们什么时候使用哪个呢?

  • 你会使用someFunction()当您希望调用该函数并立即返回其结果时。在 React 中,当您将部分 JSX 代码拆分为单独的函数时,通常会出现这种情况;出于可读性或可重用性的原因。例如:

    render() {
      myFunction() {
        return <p>Foo Bar</p>;
      }
      return (
        <div>
          {myFunction()}
        </div>
      );
    }
    

  • 你会使用someFunction当您只想将该函数的引用传递给其他函数时。在 React 中,这通常是一个事件处理程序,通过以下方式传递给另一个子组件props以便该组件可以在需要时调用事件处理程序。例如:

    class myApp extends React.Component {
      doSomething() {
        console.log("button clicked!");
      }
      render() {
        return (
          <div>
            <Button someFunction={this.doSomething} />
          </div>
        );
      }
    }
    
    class Button extends React.Component {
      render() {
        return (
          <button onClick={this.props.someFunction}>Click me</button>
        );
      }
    }
    

someFunction() vs this.someFunction()

这与函数的上下文有关。基本上,“这个功能在哪里?”。是当前Component的一部分,那么使用this.someFunction(),它是作为 props 传入的父组件的一部分,然后使用this.props.someFunction()。它是当前方法内的函数,然后使用someFunction().

显然,还有很多内容,但这是我能给出的最好的基本总结。

为了更好地理解,请阅读here https://gist.github.com/amitai10/adb66d6faa714e8c3cdb94946bb98356。这是关于如何this关键字在 Javascript 中尤其适用于 React。

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

在 React 中调用函数 的相关文章

  • Angular.js:如何从无序列表中获取 orderBy 或过滤器来工作?

    尝试根据价格和评级 在返回的对象中 进行排序 我宁愿用 ng click 和 li 来代替使用选择菜单 有没有办法做到这一点 我环顾四周 这是我能想到的最接近的 ul class restaurant filter li i class i
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • 从回调中访问状态

    我在从回调访问组件状态时遇到问题 国家的价值num更改正确 但此类更改对于加载时定义的回调函数不可见 import React useState from react class MyObject callback gt void cons
  • IntersectionObserver是否支持水平滚动观察?

    我制作了几个垂直滚动 IntersectionObserver 模块 但我对水平滚动感兴趣 根将是 div 观察目标将是 img 我想观察当 img 放大但 div 保持视口宽度时的变化 我什至不确定移动 Safari 是否会将缩放后的图片
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • 如何通过单击链接来更改 div 的内容?

    这是我的网页的 修改后的 jsfiddle 它还有很多 而且定位是正确的 与此相反 http jsfiddle net ry0tec3p 1 http jsfiddle net ry0tec3p 1 a href class btn1 st
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • JavaScript推送函数中的动态变量

    我在 JavaScript 中使用推送功能 var chartData for var i 0 i lt 3 i chartData push date new Date year s mon s date s hr s min s sec
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 如何在另一个自定义 Hook 中使用返回值的自定义 Hook?

    我正在使用 React native 其中有一个名为的自定义 HookuseUser使用以下方法从 AWS Amplify 获取用户信息Auth getUserInfro方法 然后获取返回对象的一部分并用它设置一个状态变量 我还有另一个名为
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 有没有办法使用 ko.observableArray 作为地图?

    有没有办法使用ko observableArray http knockoutjs com documentation observableArrays html像地图 字典一样 例如 var arr ko observableArray
  • Flot 库将 y 轴设置为最小值 0 和最大值 24

    如何将 y 轴设置在 0 到 24 的范围内 这是我的代码 j plot j placeholder d1 xaxis mode time min new Date 2010 11 01 getTime max new Date 2011
  • 如何从 json 文件创建模型? (ExtJS)

    这是我想使用 json 文件创建的模型 Ext define Users extend Ext data Model fields name user id type int name user name type string 为了根据服
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容

随机推荐

  • 我什么时候应该使用 Android Jetpack Compose 的 Surface 可组合项?

    有一个Surface https developer android com reference kotlin androidx compose material package summary surfaceJetpack Compose
  • jQuery.active 函数

    我试图找到有关以下 jQuery 函数的更多信息 jQuery active 它被描述为测试与服务器的活动连接数 并且当连接数为零时评估为 true 我在 jQuery 网站上找不到有关此功能的任何信息 并且想知道是否有人知道我可以在哪里找
  • 如何使用索引查找所有大于的值

    我一直在这个网站和其他网站上研究我的情况 这是最接近我的问题 解决方案的 查找大于或等于某个值的所有值 https stackoverflow com questions 23941500 find all values greater o
  • Pascal中字符串到整数的转换,怎么做?

    如何将字符串中打印的数字转换为整数 谢谢 程序 Val procedure Val S var V var Code Integer 此过程对小数和实数进行操作 参数 S 字符序列 为了正确转换 它必须包含 0 9 V 转换结果 如果结果是
  • 使用 CSS -fx-shape 绘制区域。怎么可能呢?

    我正在寻找一种在区域中绘制形状的方法 JavaFX8 我见过一些设置区域样式的示例 如下所示 fx shape M 3 0313 0 L 0 74 L 7 9688 74 L 4 9375 0 L 3 0313 0 Z 谁能解释一下这个字符
  • 如何在 Firefox 中清除 Service Worker 缓存?

    在 Chrome 中 可以从开发工具中清除 Service Worker 缓存 我们如何在 Firefox 中实现这一目标 到目前为止我已经尝试过 取消注册服务about serviceworkers 清空下面的缓存about prefer
  • Maven - 覆盖测试资源文件夹

    我在 Maven 和 Eclipse 中进行测试时遇到问题 我从 Eclipse 运行我的测试套件 一切正常 但是当我运行时 mvn test 我有一个例外 当我尝试读取测试用例中的一些文件时 它会出现 如下所示 final File ja
  • 无后端的 PWA 通知

    我正在使用 Javascript PWA 制作一个待办事项应用程序 待办事项会有提醒 我想向用户发送通知以提醒他们 任务和提醒时间将存储在localStorage中 所以现在我想在没有任何后端的情况下发送通知 我尝试过一些教程 它们都需要后
  • 为什么在 recyclerview android 中滚动后突出显示的项目会丢失

    我想在适配器类中的操作模式处于活动状态时突出显示该项目 我可以这样做 但滚动后突出显示状态消失了 我尝试了各种解决方案 但我不知道为什么会发生这种情况 public class MyAdapter extends RecyclerView
  • SQL:级联UNION和JOIN

    我在两个表之间进行联合操作 SELECT ID 1 name 1 surname 1 FROM T ONE UNION SELECT ID 2 name 2 surname 2 FROM TABLE 2 我想加入这个结果UNION与另一个表
  • 为什么我构建flutter web时会出现白屏

    我想构建一个 flutter web 应用程序 所以我输入 webdev build 命令 操作完成后 我打开位于构建目录中的 index html 文件 它只是一个白屏 我在一个新项目上尝试过 问题仍然存在 开发过程中没有问题 这是我的
  • PHP post_max_size 与 upload_max_filesize 有什么区别?

    当尝试上传PDF通过为此创建的管理区域创建的 15mb 文件 没有任何反应 没有成功或错误消息 但PDF没有上传 然后我认为这可能是一个问题php ini设置 果然 当我查看文件时 发现限制被设置为8m 我假设这意味着 8mb 帖子最大大小
  • Rails 3.1rc4 defaults.js 未找到

    我有一个全新的 Rails 3 1rc4 项目 生成脚手架 迁移并创建新条目后 我注意到我无法销毁刚刚创建的条目 结果发现 assets defaults js 找不到 所以没有弹出销毁确认对话框 我认为这可能与新的资产管道有关 但寻找解决
  • UINavigationBar 左侧有两个按钮

    我知道在 stackoverflow 上有很多类似的问题 但我的有点不同 我将用图像来展示这一点 因为它更容易理解 使用我从中获取的代码here http www mattdipasquale com blog 2010 11 02 how
  • 用户表单多页禁用选项卡单击

    我有一个带有多页选项卡的用户窗体 每个选项卡内都有一个 下一个 命令按钮 如果没有错误 您可以使用该按钮移动到下一个选项卡 如果有错误 它会提示用户并将焦点设置为该选项卡上出现错误 当用户窗体打开时 我可以单击选项卡来跳转 而无需完成任何违
  • django.template.library.InvalidTemplateLibrary:指定的模板库无效

    我正在尝试构建一个博客应用程序 运行 makemigrations 和 migrate 并创建超级用户 但我在运行服务器时遇到以下错误 django template library InvalidTemplateLibrary 指定的模板
  • 枚举变体可以具有恒定的关联值吗? [复制]

    这个问题在这里已经有答案了 我有代码 use std collections HashMap We have some arbitrary struct given values just placeholders struct SomeS
  • 如何使用基本身份验证设置 标签

    我想在我的网页上显示来自网络摄像机的图像 但该图像位于 HTTP 基本身份验证服务器后面 在 Firefox 和 Chrome 中我可以这样做 img width 320 height 200 src 但在 Internet Explore
  • 窗口句柄中的 .net 类名

    我正在开发一个应用程序来监视 Windows 计算机上运行的内容 如果在自动化过程中弹出某些对话框 它将用于发出警报 我正在使用 Windows API 来获取现有窗口的类名 效果很好 但是 如果这些是 NET 应用程序 那么我得到的不是
  • 在 React 中调用函数

    我是 React 的初学者 对于在 React 中调用函数有点困惑 我看到了以下方法 但我不知道何时使用每种方法以及哪种方法 handleAddTodo this handleAddTodo handleAddTodo this handl