javascript - 如何只改变状态的一部分?

标签 javascript reactjs state

有没有办法只改变this.state.first的一部分?假设第三个索引为真,但其余索引保持原样。我不想重写它。我考虑过使用 Spread Sytax,但我不知道该怎么做?

import React from "react";

class MyClass extends React.Component {
  constructor() {
    super();
    this.state = {
      first: [false, false, false, false, false, false, false]
    };
  }
}

最佳答案

我建议您查看 immutability-helper 包(文档:https://github.com/kolodny/immutability-helper),如 https://reactjs.org/docs/update.html 中所述

它将负责确保创建新数组,正如 Chris 在另一个答案中提到的那样。如果没有新数组,状态将不会知道任何更改并且需要更新。在您的情况下,代码看起来像这样:

import React from "react";
import update from "immutability-helper";

class MyClass extends React.Component {
  constructor() {
    super();
    this.state = {
      first: [false, false, false, false, false, false, false]
    };
  }

  onChange = (toggleIndex) => {
    //gets current value and uses bang (!) operator to get inverse value
    let newValue = !this.state.first[toggleIndex];

    //immutability-helper will take care of making sure the array gets updated and recreated
    let newState = update(this.state, {
            first: {
                [toggleIndex]: {
                    $set: newValue
                }
            }
        }
    );

    this.setState(newState);
  }
}

关于javascript - 如何只改变状态的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54335471/

相关文章:

javascript - Angular2 - 检查是否使用@HostListener 将新类添加到指令中

javascript - 用JS重置CSS3计时功能

javascript - 当它只占用空间而不显示文本时,如何显示我的 html 内部文本?

haskell - Haskell 中状态单子(monad)的增量函数

javascript - 如何正确地将 State 传递给 React 中的不同函数?

javascript - 将 JavaScript 代码转换为书签以便于访问

javascript - 边框图像圆锥渐变示例在 React 中不起作用

android - Expo/React Native - 添加可点击图标以及 StackNavigator 对象

javascript - 如何使用 react 钩子(Hook)动态创建处于状态的对象?

macos - 保存整个桌面状态?