反应如何从状态中删除属性
React how to delete properties from state
我正在尝试替换整个状态或至少删除其中的所有属性。
在react 16之前我只是调用了这两行
this.state = {}
this.forceUpdate()
随着更新到 React 16,这不再有效。
目前我在 shouldComponentUpdate 方法中有这个解决方法:
for (let prop in nextState) {
if (nextState.hasOwnProperty(prop)) {
delete nextState[prop];
}
}
但是这个'feels'不对。那么有人知道用新对象重置整个状态的正确方法吗?据我测试,this.setState 只是改变了差异并保持其他属性不变。
您不能从状态中删除属性,因为它在内部使用合并
nextState = Object.assign({}, nextState, partialState);
所以无法删除已经存在的密钥。您唯一可以做的就是将当前键设置为未定义。
如果你知道这些属性,你可以手动设置它们。
如果没有,您可以尝试将它们全部设置为未定义:
this.setState(
Object.keys(this.state).reduce((a, c) => {
a[c] = undefined;
return a;
}, {})
)
我正在尝试替换整个状态或至少删除其中的所有属性。
在react 16之前我只是调用了这两行
this.state = {}
this.forceUpdate()
随着更新到 React 16,这不再有效。 目前我在 shouldComponentUpdate 方法中有这个解决方法:
for (let prop in nextState) {
if (nextState.hasOwnProperty(prop)) {
delete nextState[prop];
}
}
但是这个'feels'不对。那么有人知道用新对象重置整个状态的正确方法吗?据我测试,this.setState 只是改变了差异并保持其他属性不变。
您不能从状态中删除属性,因为它在内部使用合并
nextState = Object.assign({}, nextState, partialState);
所以无法删除已经存在的密钥。您唯一可以做的就是将当前键设置为未定义。 如果你知道这些属性,你可以手动设置它们。
如果没有,您可以尝试将它们全部设置为未定义:
this.setState(
Object.keys(this.state).reduce((a, c) => {
a[c] = undefined;
return a;
}, {})
)