this.props.onChange() 的目的是什么?

2024-03-26

从反应快速入门:https://facebook.github.io/react/docs/lifting-state-up.html https://facebook.github.io/react/docs/lifting-state-up.html

该线的目的:

  handleChange(e) {
    this.props.onChange(e.target.value);
  }

从未被解释过,我不明白它是什么does。 onChange 是 props 的内置方法吗?我以为 props 只是组件的参数,为什么它可以调用函数呢?


我带着同样的问题来到这里,但我现在明白了(至少我认为我明白了)。问题是onChange in the Calculator类是一个道具,但在类的渲染部分TemperatureInput,它是一个事件监听器。有时我在 React 中看到这种情况,其中相同的名称用于两个完全不同的事物,我发现它很容易造成混乱。以下代码块中发生的情况如下:

class TemperatureInput extends React.Component {
  handleChange(e) {
    this.props.onChange(e.target.value); **(2)**
  }
  render() {
    return (
      <fieldset>
        <input value={value} onChange={this.handleChange} /> **(3)**
      </fieldset>
    );
  }
}

class Calculator extends React.Component {
  handleCelsiusChange(value) {
    this.setState({scale: 'c', value});
  }
  render() {
    return (
      <div>
        <TemperatureInput
          scale="c"
          value={celsius}
          onChange={this.handleCelsiusChange} /> **(1)**
      </div>
    );
  }
}
  1. In Calculator,一个名为onChange传递对该方法的引用handleCelsiusChange to TemperatureInput
  2. this.props.onChange() in TemperatureInput现在是参考handleCelsiusChange() in Calculator
  3. onChange={this.handleChange}是一个事件监听器,它将触发handleChange()输入字段的更改。

综上所述,onChange由于道具是定制的,onChange因为内置了事件侦听器。 prop 只是将函数引用从祖先传递给子级,以便您可以在子级中运行它。

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

this.props.onChange() 的目的是什么? 的相关文章

随机推荐

  • 如果我不等待任务会怎样?

    考虑这个例子 var task DoSomething bool ready await DoSomethingElse if ready return null var value await DoThirdThing depends o
  • 从项目根目录移动 cypress 文件夹

    当我安装并运行 cypress 时 它会搭建一个cypress 我的项目根目录中的文件夹 问题是所有其他测试相关数据都存储在test 文件夹 有没有简单的方法可以将其移动到test cypress并配置 cypress 来查看那里 赛普拉斯
  • 在同一 SQL 查询中使用“WITH”和“UPDATE”语句

    我有一个表格 需要使用 Excel 电子表格中的一些数据进行更新 我正在考虑这样的查询 WITH temp AS SELECT abcd AS oldvalue defg AS newvalue FROM dual UNION SELECT
  • Fortran 90 - 尝试读取文件末尾之后的内容

    我在 Fortran 90 中遇到读取问题 我尝试读取 31488 行数据 我正在使用 Portland Group Fortran 90 编译器 我的错误信息是这样的 PGFIO F 217 列表定向读取 单元 14 尝试读取文件末尾 文
  • MacOS M1 上的 Docker kafka 配置时遇到问题

    我使用 macOS M1 Big Sur 11 2 3 但我的 kafka 无法正常运行 无法创建 列出主题 我不知道是不是操作系统的原因 但是kafka的日志只是这样 docker compose 日志 https i stack img
  • 使用 forEach() 返回数组值[重复]

    这个问题在这里已经有答案了 我希望返回存储在另一个对象中的数组的名称值 exports send function req res req body items forEach function item console log item
  • 设置服务总线辅助角色的 OperationTimeOut 属性

    我正在使用服务总线辅助角色模板创建辅助角色 我处理每条消息都要花费一分多钟的时间 因此 我发现工作角色多次收到相同的消息 大约每分钟收到一条消息 我认为这是因为该值默认为 60 秒 http msdn microsoft com en us
  • Android所有广播Intent列表在哪里

    我想接收Android广播消息 有所有意图的列表吗 我找到了广播意向列表 它可以位于sdks or android sdks platforms
  • 如何在 Tomcat 中为单个 Web 应用程序设置时区?

    在 Tomcat 中为单个 Web 应用程序设置时区的最佳方法是什么 我已经看到了更改 Tomcat 的命令行参数或环境变量的选项 但是有没有一种方法可以将其设置为独立于 WAR 文件而不依赖于任何 Tomcat 配置 编辑 再次强调 我正
  • Glassfish 4.1.1 - 使用我自己的证书的 DAS 抛出“j_security_check”错误

    我有一个 glassfish 4 1 1 实例正在运行 并将我自己的证书添加到我的应用程序中 直到那时一切都正常 但是 当我尝试访问 glassfish 管理员 DAS 时 连接不受信任 并且添加例外的按钮消失了 然后我发现了一些有趣的链接
  • 无法为 32 位 HKLM 设置注册表插入

    我想在 Inno setup 中创建一个带有子菜单项的上下文菜单 问题是 它在 64 位注册表 WoW6432Node 部分插入 HKLM 密钥 The 文档 http www jrsoftware org ishelp index php
  • 从变量打印mysql查询的结果

    所以我之前写过这个 在 php 中 但是每次我尝试 echo test 时 我只是返回资源 id 5 有谁知道如何从变量中实际打印出 mysql 查询 dave mysql query SELECT order date no of ite
  • Google Chrome 扩展浏览器和页面操作

    有没有办法在已经实现 browser action 的扩展中添加 page action 我想使用 browser action 显示带有书签列表的弹出窗口 同时使用 page action 为用户提供一种为当前页面添加书签并将其加载到列表
  • std::numeric_limits::infinity() 的倒数为零吗?

    C 标准 或 IEEE 754 浮点标准 中是否有任何内容可以保证1 std numeric limits
  • 在html中编码物理地址的最佳方法是什么?

    在 html 中编码物理地址的最佳方法是什么 以语义 可访问和 SEO 方式 Use a 微格式 vCard div class vcard span class fn Gregory Peck span a class org url h
  • 转到点击事件 jquery 上的锚链接

    正如描述所说 我在java脚本上发现了很多关于平滑滚动和位置属性的东西 但似乎没有什么能做我正在寻找的事情 这只是模仿html a 标签的功能 我不需要使用该项目的 html 链接标签 所以我得到的是你想向下滚动到一个元素而不使用 html
  • SECURITY_ERR:DOM 异常 18 仅在 Safari 中

    我有两台服务器 prod example com 和 img example com 所以在 prod 上 我使用画布处理 img 中的图像 在 FF 和 Chrome 中一切正常 但在 Safari 中我得到了这个SECURITY ERR
  • 如何向表格组件传递参数?

    我正在使用 Jaspersoft Studio 创建报告 发现将参数传递到表时出现问题 报告布局和结果 正如您在这些图片中看到的 当我尝试使用参数来设置表标题时 我得到了null 为了获取值 我在报表参数列表和表数据集参数列表中创建了相同的
  • 如何使用 jquery 调用 php 控制器方法?

    我正在开发一个 Web 应用程序 并且正在将 jquery 集成到其中 现在正在寻找使用 jquery 对我的控制器功能进行 ajax 调用 jquery ajax 我认为是有用的 但是如何调用我的控制器方法 ajax type POST
  • this.props.onChange() 的目的是什么?

    从反应快速入门 https facebook github io react docs lifting state up html https facebook github io react docs lifting state up h