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

如何更新React状态下的嵌套对象?[重复]

单于煌
2023-03-14

谁能告诉我我在这里做错了什么?从console.log,我可以看到日期功能正在正常工作。但是,即使在this.setState之后,时间戳也不会更新。提前感谢!

共有1个答案

巫坚白
2023-03-14

您需要将setState回调一起使用

根据官方文件

setState()并不总是立即更新组件。它可能会批处理或推迟更新,直到稍后。这使得在调用setState()之后读取this.state成为一个潜在的陷阱。取而代之的是,使用组件didUpdate或setState回调(setState(updater,回调)),这两者都保证在应用更新后触发。

this.setState((prevState)=>{
   userInfo:{
       ...prevState.userInfo,
       timestamp:timestamp
},()=>console.log(this.state.userInfo.timestamp)) // console.log here as setState is async operation
 类似资料:
  • 问题内容: 我试图通过使用这样的嵌套属性来组织我的状态: 但是像这样更新状态 不起作用。如何正确完成? 问题答案: 为了创建嵌套对象,您可以按照以下方法进行操作,因为我认为setState无法处理嵌套更新。 这个想法是创建一个虚拟对象,对其执行操作,然后用更新的对象替换组件的状态 现在,散布运算符仅创建对象的一级嵌套副本。如果您的状态是高度嵌套的,例如: 您可以在每个级别使用传播运算符来设置状态,

  • 我正在尝试学习React(使用redux),所以我正在制作一个应用程序,在其中我可以创建训练计划,将训练添加到计划中,然后将训练添加到训练中。 PlanListComponent 我的PlansList组件为每个计划呈现一张卡片。在这张卡片中,它为该计划中的每个训练呈现一个训练列表。将训练添加到计划后,“计划列表”组件不会重新渲染。添加的训练仅在我刷新页面后显示。我之所以选择这种情况,是因为我必须

  • 对于我正在使用的插件,我必须具有如下状态: 如何在不设置其余访问权限的情况下设置hospital_id状态? 这似乎删除了一切,但hospital_id:

  • 问题内容: 对于我正在使用的插件,我必须具有如下所示的状态: 我如何在不设置其余访问权限的情况下设置hospital_id的状态? 这似乎删除了除了hospital_id之外的所有内容: 问题答案: 您有几种选择: 借助ECMA6,您可以使用对象传播建议()创建具有更新属性的对象的副本。 您可以在对象()上使用本机分配功能 或为最短的版本和原子更新: 还有一个选项是更新插件: 我建议使用第一个。

  • 我们正在热烈讨论如何在React中更新嵌套状态。国家是否应该是不可改变的?优雅地更新状态的最佳实践是什么? 假设你有这样的状态结构: 然后我们要更新乔·多伊的电话号码。我们有几种方法可以做到这一点: 将状态强制更新更改为重新加载 带变异状态的变异状态集合状态 Object.assign,这仍然会改变状态,因为new学生只是对this.state指向的同一对象的新引用 更新不变性助手(https:/

  • `正在尝试更新onclick中的对象数组。我有两个状态,即数组格式的“IntialValue”和“Todos”。当我检查react developer工具时,我可以看到有两种状态。该任务的流程是用户可以在输入文本框中输入文本,一旦用户点击了添加按钮,我想把它添加为对象数组,我保留了一个布尔字段和Id字段。我面临的问题是我能正确地得到“InputValue”。我还得到了对象的数组,但不是在“todo