React:如何覆盖状态

时间:2019-03-18 17:06:14

标签: reactjs

通常,当我们def rec(alist): print(alist) if len(alist) == 4: return (alist) if alist[-1] == 0 or len(alist) == 0: alist.append(1) return(rec(alist)) if alist[-1] == 1: alist[-1] = -1 return(rec(alist)) if alist[-1] == -1: alist[-1] = 0 return(rec(alist)) 时,我们希望将一些新状态与旧状态合并。我有一个要覆盖旧状态的用例。有什么干净的方法可以做到这一点吗?

例如,假设我的当前状态有561个不同的属性。我希望新状态具有3个属性。我是否必须在for循环中迭代所有属性并调用setState 561次以分别删除每个属性?

1 个答案:

答案 0 :(得分:4)

没有一种干净的方法,在构造组件之后重新分配this.state被认为是不好的做法。

正如问题中所建议的那样,应该通过迭代其键来清除状态:

setState(prevState => {
  const state = {};
  for (let key in prevState)
    state[key] = undefined;
  ...
  return state;
});

如果要处理的属性太多,则可能意味着状态最初是通过低效的方式构造的。