首页 > 解决方案 > 想要在对象数组中保存(设置)状态

问题描述

我在表单上有以下字段。 表单上有多个设备,每个设备上都有嵌套字段。 -

当我提交表单时,我想将所有值保留在本地状态

比如 ie devices{id1=>{name: "abc",sign: "xxx", is_exportad: true, producer_date: "12/10/2010" },id2=>{name: "hhh",sign: "xxfr" ,is_exportad:假,制造日期:“2011 年 12 月 10 日”}

所以我可以通过类似于

this.state.device[id1].name

当我以后需要它时,我试过了

 let model = id
        this.setState(prevState => {
            return {
                [model]: {
                    ...prevState[model],
                    [name]: url
                }
            };
        });

但这只会产生 {id1=>{name: "v", sign: "val" }, id2 => {name: "v", sign: "val" }}

标签: reactjsreact-state

解决方案


您还需要传播现有值prevState

let model = id
this.setState(prevState => {
    return {
        ...prevState,
        devices: {
            ...prevState.devices,
            [model]: {
                ...prevState.devices[model],
                [name]: url
            }
        }
    };
});

推荐阅读