我正在尝试使用Immutability-Helper和React更新State,但没有得到预期的结果。

constructor(props) {
    super(props);

    this.state = {
        parents: {}
    };
}

handleParent = (member, data) => {
    // ex : member = 'applicant'
    // ex : data = {'gender': 'man', 'pseudo': 'Tom'}
    let newParent = update(this.state.parents, {
        [member]: { $set: [data]}
    });

    this.setState({'parents': newParent});
};


结果:

parents {
    'applicant': {
        0 : {'gender': 'man', 'pseudo': 'Tom'}
    },
    'partner': {
        0 : {'gender': 'woman', 'pseudo': 'Julie'}
    }
}


但我希望父母成为:

parents {
    'applicant': {
        'gender': 'man',
        'pseudo': 'Tom'
    },
    'applicant': {
        'gender': 'woman',
        'pseudo': 'Julie'
    }
}


有什么帮助吗?

丹尼斯

最佳答案

请注意,您分配了$set: [data],例如,在运行时它将评估为$set:[{'gender': 'woman', 'pseudo': 'Julie'}],即单个值数组。
只需移除方括号,就可以了:

let newParent = update(this.state.parents, {
    [member]: { $set: data }
});

09-25 17:23