【发布时间】:2020-09-14 10:17:27
【问题描述】:
问题
嗨,
我正在尝试部分更新我的状态对象:
const [elephantProp, setElephantProp] = useState({
name: "",
color: "",
size: "",
race: "",
country: "",
});
假设我只想更新颜色和尺寸参数。
我尝试过的
1
动态改变参数(根据输入对象):
const handleChange = (input) => {
Object.keys(input).forEach((key) => {
setElephantProp({ ...elephantProp, [key]: input[key] });
};
输出:仅更改最后一个参数(大小)。
2
一次性设置所有参数:
const handleChange = (input) => {
setElephantProp({ ...elephantProp, color: input.color, size: input.size });
};
输出:有效但不是动态的(如果我向输入对象添加参数将没有效果)
你对如何动态更新我的一些状态变量有什么想法吗?
也许我应该考虑拆分成多个状态变量(变量太多不方便)或使用嵌套对象?
【问题讨论】:
-
setElephantProp 是异步方法,这就是发生这种情况的原因。当您遍历它时,您不会获得状态更新值。所以最后一个值得到更新。你能不能试试 for 循环它同步和 forEach 是异步的。希望对您有所帮助。
标签: javascript reactjs react-hooks state