【问题标题】:How to update nested objects in React state? [duplicate]如何更新 React 状态下的嵌套对象? [复制]
【发布时间】:2020-07-31 22:54:29
【问题描述】:

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

【问题讨论】:

  • setState 是异步函数。渲染函数中的值是否也没有更新?如果可以,你能提供一个更完整的例子吗?
  • @TomSlutsky 我明白了!我不知道 setState 是一个异步函数。那我会用 async-await 解决这个问题!谢谢!

标签: javascript node.js reactjs


【解决方案1】:

您需要将setStatecallback 一起使用

根据官方文档

setState() 并不总是立即更新组件。它可能会批量更新或将更新推迟到以后。这使得在调用 setState() 之后立即读取 this.state 是一个潜在的陷阱。相反,请使用 componentDidUpdate 或 setState 回调 (setState(updater, callback)),它们都保证在应用更新后触发。

this.setState((prevState)=>{
   userInfo:{
       ...prevState.userInfo,
       timestamp:timestamp
},()=>console.log(this.state.userInfo.timestamp)) // console.log here as setState is async operation

【讨论】:

  • 我明白了!我不知道 setState 是一个异步函数。我会用 async-await 解决这个问题!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2020-07-30
  • 2020-11-13
  • 1970-01-01
  • 2016-02-09
  • 2018-11-08
  • 2016-08-07
  • 2020-04-27
  • 1970-01-01
相关资源
最近更新 更多