React .setState() 中的展开运算符

2024-01-08

给出从 React 类组件中提取的以下代码片段:

constructor(props) {
    super(props)
    this.state = { active: true }
  }

  deactivate = () => {
    this.setState({ ...this.state, active: false })
  }

将展开运算符添加到 stopCounter() 方法中的目的是什么?该应用程序还可以删除它:

  deactivate = () => {
    this.setState({ active: false })
  }

在这种情况下两者都有效,但您不需要使用它。只需设置状态就可以了:

this.setState({active: false})

但是让我解释一下如果您有嵌套的状态级别,例如:

state = {
  foo: {
   a: 1,
   b: 2,
   c: 3
  }
}

当您只需要更新 foo 的 c 状态时,您需要合并状态,如下所示:

this.setState({ foo: {
  ...this.state.foo,
  c: 'updated value'
}})

因此,扩展语法将对象与后面的对象合并。它类似于对象.分配 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.

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

React .setState() 中的展开运算符 的相关文章

随机推荐

  • 如何使用 javascript 代码突出显示 JQM-DateBox 日历中的日期

    如何用两种不同的颜色突出显示日历中的单元格 即一些单元格为红色 其他单元格为绿色 使用JavaScript 一些代码 javascript 代码 单击按钮时显示日历 并且应该为日历设置日期 但事实并非如此
  • 通过 /dev/pts 在另一个终端中执行命令

    我有一个使用的终端STDIN 3 proc xxxx fd 0 gt dev pts 3 所以如果 在另一个终端 我这样做 echo do something command gt dev pts 3 该命令显示在我的第一个 pts 3 终
  • 用于更改安装项目的 ProductVersion 的预构建事件只有在构建之后才会生效

    我已按照描述的步骤操作here https stackoverflow com questions 306233 how to programatically change a projects product version使用预构建事件
  • 自动调整TableLayoutPanel的大小

    我有一个以编程方式创建的 TableLayoutPanel 它工作正常 但我找不到一些东西 如何在调整表单大小时使其自动调整列大小 面板设置为 Dock Top 当我调整表单大小而不是按百分比调整每列大小时 只有最后一列会增长 为此我能做什
  • DownloadString 给出了似乎在浏览器中工作的 https url 的超时

    我正在尝试将此 URL 中的内容获取到我的程序中 https data mtgox com api 2 BTCUSD money ticker https data mtgox com api 2 BTCUSD money ticker 在
  • 无法修复 Android Proguard 返回错误代码 1 错误

    当我尝试在我的 Android 应用程序中使用 proguard 时 只需添加 proguard config sdk dir tools proguard proguard android txt 对于我的 project propert
  • Pycharm 有交互式 Python 解释器吗?

    我是最近从其他 IDE 切换到的 Pycharm 新用户 我的一个问题是关于交互式 python 解释器 它是一个 窗口 我可以在运行脚本后输入变量来检查它们 Pyscripter 有一个叫做 Python 解释器 的东西 我知道 Pych
  • Gson自定义反序列化

    我正在使用 Gson 创建和解析 JSON 但我遇到了一个问题 在我的代码中我使用这个字段 Expose private ArrayList
  • 关闭 PDO 语句

    我最近决定从 MySQLi 跳到 PDO 但有一些关于 PDO 准备好的语句的问题困扰着我 在 MySQLi 中 我会编写一个典型的获取查询 如下所示 db new mysqli localhost user pass mydb sql S
  • getBoundingClientRect() 在 XUL 中返回零

    我的 Firefox 扩展有问题 我有一个 XUL 弹出面板 其中包含用于标签云的 hbox 以及用于将 div 添加到此 hbox 的 JS 代码
  • BigQuery 日期分区视图

    BigQuery 允许您创建日期分区表 https cloud google com bigquery docs creating partitioned tables https cloud google com bigquery doc
  • 在 Google 地图中使用 3D

    我想创建一个 web 应用程序 我可以在其中显示我自己的 geotiffs NDVI 和其他数据层以及 3D 几何图形 提供 2D 图块和纹理 3D 形状的无缝渲染 就像maps google com 在中实现的那样从 地图 视图切换到 地
  • 验证失败时重新填充单选按钮

    我有一个从数据库中提取数据的表单 如果它是一个输入框 代码可以正常工作 但我无法获取单选按钮的最新 POST 数据 这适用于输入文本框 我在第一次加载时获得从数据库中提取的默认值 并且我可以从用户在验证失败时修改输入框获得新的输入 如果有
  • 如何使用SAX PARSER解析android中的html内容

    xml中有描述标签 它包含 html 标签 我在android中使用SAX解析器来解析 但是 当它从描述标签获取数据时 它不会获取 html 内容 也不会获取任何标签 那么我如何解决使用 SAX 解析器从 XML 解析 html 内容的问题
  • 当相机之间的角度太大时,OpenCV 立体图像校正无法正常工作

    我想收集位于两个摄像机焦点处的身体的高度数据 这就是我的立体声设置的样子 当我使用标准 cv2 函数计算图像的校正版本时 它看起来非常糟糕 当我对相机并行使用类似的设置时 它起作用了 我计算了外线 它们似乎是正确的 However the
  • 需要帮助重写 WPF 按钮样式背景颜色。

    我为自定义按钮设置了以下代码 但我想更改单个按钮的背景
  • Phonegap/ios7 - 重新加载时未触发 deviceready 事件

    我们的 Phonegap 混合应用程序在首次加载时工作正常 在这种情况下 很明显 deviceready 事件正确触发并且应用程序启动 没有问题 我们需要在某个时候重新加载应用程序 我们只需对index html 主应用程序html 文件
  • 在容器创建时设置docker镜像用户名?

    我有一个 OpenSuse 42 3 docker 映像 已将其配置为运行代码 该映像有一个名为 myuser 的用户 root 除外 该用户是我在初始映像生成过程中通过 Dockerfile 创建的 我有三个脚本文件 它们根据用户所在的操
  • jquery循环遍历json

    您好 我正在尝试循环遍历 json 文件 如下所示 each data playlists playlist function i item contentC append p item id p contentC append p ite
  • React .setState() 中的展开运算符

    给出从 React 类组件中提取的以下代码片段 constructor props super props this state active true deactivate gt this setState this state acti