【发布时间】:2019-04-29 21:01:11
【问题描述】:
我们的项目正在拥抱新的功能性 React 组件并大量使用各种钩子,包括 useState。
与 React 类的 setState() 方法不同,useState() 返回的设置器完全替换状态而不是合并。
当 state 是一个 map 并且我需要删除一个 key 时,我克隆现有 state,删除 key,然后设置新 state(如下所示)
[errors, setErrors] = useState({})
...
const onChange = (id, validate) => {
const result = validate(val);
if (!result.valid) {
setErrors({
...errors,
[fieldId]: result.message
})
}
else {
const newErrors = {...errors};
delete newErrors[id];
setErrors(newErrors);
}
是否有更好的选择(更好地更高效和/或更标准)?
【问题讨论】:
-
这段代码有效吗?如果是这样,it's on topic there,这个问题在Code Review 上可能会更好。
标签: javascript reactjs ecmascript-6 react-hooks