当前位置: 首页 > 知识库问答 >
问题:

复杂状态未正确更新[重复]

巩俊远
2023-03-14

招呼:

我认为我没有正确更新我的复杂状态:

export const App = () => {
  const [combos, setCombos] = useState({
    combo1: { data: [1, 2, 3, 4, 5], selected: "" },
    combo2: { data: [8, 9, 10, 11, 12], selected: "" }
  });
  return (
    <div>
      <button  onClick={() => setCombos((ps) => ({ ...ps, combo1: { selected: "" }}}>
        Click Me
      </button>
      <div>
        Combo 1 has a "data" key:{combos.combo1.hasOwnProperty("data") ? "Yes" :No"}
      </div>
    </div>
  );
};

如何正确更新此状态?谢谢

https://codesandbox.io/s/intelligent-ellis-qi97k?file=/src/App.js

共有1个答案

仲孙毅
2023-03-14

设置状态时,还必须在combo1属性中使用spread运算符。如果仅更新选定的属性,则数据属性将丢失。

export const App = () => {
  const [combos, setCombos] = useState({
    combo1: { data: [1, 2, 3, 4, 5], selected: "" },
    combo2: { data: [8, 9, 10, 11, 12], selected: "" }
  });
  return (
    <div>
      <button  onClick={() => setCombos((ps) => ({ ...ps, combo1: { ...ps.combo1, selected: "" }}}>
        Click Me
      </button>
      <div>
        Combo 1 has a "data" key:{combos.combo1.hasOwnProperty("data") ? "Yes" :No"}
      </div>
    </div>
  );
};
 类似资料:
  • 我有一个简单的组件 问题是我需要添加什么

  • 我正在开发一个小待办事项应用程序,作为使用React的练习。我有一个这样的模拟服务: 在我的React应用程序中,我有一些包含TODO的状态: 是一个函数,我将它传递到我的组件中,当我想完成这样一个Todo时使用: 因此,每当用户单击复选框并使用调用时,就会从服务对象中删除它,并且状态应该更新,但最奇怪的事情发生了。 当调用时,todo将被正确删除,但当调用时,旧的todo仍然存在!如果我将内容写

  • 我正在从一个文件导出常量并将其导入另一个文件,如下所示: 常数.js App.js 我希望我的初始状态是在构造函数中设置的,然后在componentWillMount上,我希望使用常量文件中的值设置状态,然后再围绕组件和流添加进一步的逻辑。 但是,我发现,我的状态没有被更新,如果我在调用setState之后记录控制台日志,状态仍然没有定义,如果我引入一个方法,需要state中的值,那么在执行堆栈的

  • 问题内容: 抱歉,我真的很想念React中子组件内部的传递。 我已经实现了一个包含3个组件的待办事项列表。 有一个组成部分和一个组成部分。状态仅存储在组件中。 显示器起步不错,因此可以看到道具。但是在提交表单后,我收到了以下错误: TypeError:this.props.tasks.map不是函数 当我console.log时,我没有得到我的数组,而是数组的长度。 你知道为什么吗? 编辑 :谢谢

  • 我有3个div。当我点击特定的按钮时,每个人都会有类活动。它们的每个div都有一个状态变量,每当它是真的时,我都会向连接到它的div添加class Name='active': 当我点击按钮时,状态改变,但是div没有激活类 当我将函数更改为此时,它会工作: ================================================ =====================

  • 我的GUI显示了我的停车场中的车辆,以及我想在两个不同的VehicleTable(扩展JTable的类)中设置可用的车辆。对于可用的车辆,我希望可以通过代理(第三方软件)观察这些车辆。这两个表都显示了行中车辆的描述…为此,我创建了VehicleTableModel和Vehicle类。Vehicle类是一个抽象类,其子类是:Car、Truck、Trailer等。 我的问题是:在我当前的实现中,我认为