setState是替换密钥中的所有现有数据,还是只更新需要更新的内容?

时间:2015-02-05 19:37:34

标签: javascript reactjs

在反应中,如果我有一个状态的对象,比如:

{flags:
   loading: false,
   visible: true
}

然后调用setState({flags:{loading:true}});,它只是更新加载标志,还是替换整个标志对象?

1 个答案:

答案 0 :(得分:4)

setState浅显地将当前状态与您传递给它的新状态合并。如果合并

{
  flags: {
      loading: false,
      visible: true
  }
}

{
  flags: {
      loading: true
  }
}

整个flags属性将被覆盖并替换。

但如果您在初始状态(与flags2处于同一级别)中有另一个名为flags的属性,则不会受到影响。