javascript - ReactJS — 检测状态变化的问题

标签 javascript object reactjs state

查看此示例:http://codepen.io/lzhelenin/pen/jVbeRg

有一个小型 React 应用程序,它的初始状态如下所示:

{
  foo: 123,
  bar: [{
    cux: 456
  }]
}

如果按下该按钮,它会在 state.bar 中添加一个新对象并更改 state.foo 值。但是,如果您按下它并查看控制台,您会发现前一个状态的 state.bar 与新状态的 state.bar 完全相同,尽管 state.foo 不同。为什么会发生这种情况?

最佳答案

正如 @Radio- 提到的,_.clone 创建一个浅复制克隆,因此 prevcurr state 都引用同一个数组,因此您最好将 clickHandler() 方法调整为如下所示:

  clickHandler() {
    this.setState({
      foo: 999,
      bar: [
        ...this.state.bar,
        {cux: 123}
      ]
    });
  }

关于javascript - ReactJS — 检测状态变化的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40530233/

相关文章:

Javascript 在特定类出现后在 div 中包装多个 p 标签

javascript - 在双 for 循环中将项目添加到不同对象 - Javascript

javascript - 循环对象的顺序可能仅在迭代期间被破坏?

c++ - 临时对象有作用域吗?

javascript - 使用 styled-components 时需要 `import React from ' react'`?

javascript - create-react-app 中的 CSS 链接

javascript - map 图标仅显示我的信息窗口的第一个字符

javascript - Litelement 将对象作为 html 属性传递

java - 确定对象是否为整数

javascript - 从日历中选择单个日期的 react 日期解决方案