【发布时间】:2021-01-14 02:00:21
【问题描述】:
上下文
嗨,
我正在创建一个表单来创建虚拟机。信息跨多个页面(组件)收集并集中在顶级组件中。
它的状态对象如下所示:
const [vmProp, setVmProp] = useState({
name: "",
image_id: "",
image_name: "",
volumesList: [],
RAM: "",
vcpu: "",
autostart: true,
});
问题
我希望能够向卷列表添加/删除卷,并且我希望卷列表看起来像这样:
[
{
name: "main",
size: 1024
},
{
name: "backup",
size: 2048
},
{
name: "export",
size: 2048
}
]
我尝试过的
目前我只尝试添加一个卷。
1 : 工作但没有产生我想要的东西
const handleAddVolume = (obj) => {
setVmProp({ ...vmProp,
volumesList: {
...vmProp.volumesList,
[obj.name]: {
size: obj.size,
},
} });
};
它正在工作,但输出是:
[
name: {
size: 1024
}
]
2 :应该可以工作,但不是
const handleAddVolume = (obj) => {
setVmProp({ ...vmProp,
volumesList: {
...vmProp.volumesList,
{
name: obj.name,
size: obj.size,
},
} });
};
输出:
[
name: "main",
size: 1024
]
您对如何处理此类状态对象有任何想法吗? 谢谢
【问题讨论】:
-
让
volumesList成为它自己的状态原子,你会玩得更好。 (最好让所有不同的位成为自己的原子。)
标签: javascript arrays reactjs object react-hooks