You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next/React:如何正确整合多个子组件的状态

解决状态覆盖问题的方案

问题核心是状态更新时未对嵌套层级的对象做合并处理,直接替换了同个父ID下的整个对象。要实现状态合并,需在更新时保留原有父ID下的所有属性,再添加新字段值。

修改Grandparent组件中的handleChange函数,用函数式更新获取前一次状态,对嵌套对象做深一层的展开合并:

const handleChange = (parentId: string, fieldName: string, value: any) => {
  setFormState(prevState => ({
    ...prevState,
    values: {
      ...prevState.values,
      [parentId]: {
        // 保留当前父ID下已有的所有属性,若无则用空对象初始化
        ...(prevState.values[parentId] || {}),
        // 添加/更新当前字段的值
        [fieldName]: value
      }
    }
  }));
};

修改后,当你更新id为0的Parent组件中的Text2时,会先保留该父ID下已有的Text1: "test"属性,再合并新的Text2: "test",最终得到期望的状态:
{"values":{"0":{"Text1":"test", "Text2":"test"},"1":{"bool":true}}}

内容的提问来源于stack exchange,提问作者saddiqs1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:40:29