javascript - 状态应该是嵌套的还是扁平的

标签 javascript reactjs

例如,

constructor(props) {
  super(props);
  this.state = {
    interactions: {
      liked: [],
      saved: [],
      receivedLikeRecently: null
  }
}

我正在努力解决不变性问题,所以如果我现在想将 receivedLikeRecently 更新为 true,我是否必须这样做:

this.setState({
  interactions: {
    receivedLikeRecently: true
  }
});

其他值呢?我还需要包括它们吗?

根据文档 setState 进行浅合并,所以我假设其他嵌套属性不会复制,对吗?还是我理解错了?

谢谢

最佳答案

你应该保持你的状态平坦以避免深度合并,深度合并必须手动完成并且会变得非常烦人,如果频繁进行还会导致性能下降。

Component.setState 使用简单的 === 来测试属性是否已更改,这将导致它始终更新状态对象的对象值属性。

关于javascript - 状态应该是嵌套的还是扁平的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43128577/

相关文章:

javascript - 在 npm 包中传递 init 值

javascript - Reactjs 和 masonry 布局 - 未定义

css - 如何自定义标签的背景和颜色?

javascript - 使用范围输入动态更改 setInveral/Timeout 速度

javascript - 在 Node.js 中的文件之间共享变量?

javascript - 获取要解析的内联 JSON

javascript - 为什么要在构造函数之外设置 React 组件的状态?

javascript - 如何创建一个不会破坏附加到模板的事件的 JavaScript 模板引擎?

reactjs - React-select 组件值未更新。

javascript - 在不刷新页面的情况下更改 URl NEXT.JS