通常,当我们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次以分别删除每个属性?
答案 0 :(得分:4)
没有一种干净的方法,在构造组件之后重新分配this.state
被认为是不好的做法。
正如问题中所建议的那样,应该通过迭代其键来清除状态:
setState(prevState => {
const state = {};
for (let key in prevState)
state[key] = undefined;
...
return state;
});
如果要处理的属性太多,则可能意味着状态最初是通过低效的方式构造的。