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

React Hooks使用onChange修改嵌套对象状态时丢失lng值如何解决

React Hooks嵌套状态更新保留原有属性解决方案

问题根因

当前更新逻辑直接替换了完整的coordinates对象,仅保留了新传入的单属性,原有lng属性被直接覆盖导致丢失。

修正代码

更新嵌套层级的状态时,需要先展开当前层级的原有属性,再覆盖要修改的字段:

const handleLat = (event) => {
    setInputFields({ 
      ...inputFields, 
      coordinates: {
        // 展开原有coordinates的所有属性,保留lng值
        ...inputFields.coordinates,
        [event.target.name]: parseInt(event.target.value)
      } 
    })
};

优化写法

如果需要同时适配纬度、经度两个输入框的更新,推荐使用函数式更新写法,规避React异步状态更新可能带来的旧值引用问题:

// 只需给lat输入框设置name="lat",lng输入框设置name="lng",即可共用该处理函数
const handleCoordinateChange = (event) => {
  setInputFields(prevState => ({
    ...prevState,
    coordinates: {
      ...prevState.coordinates,
      [event.target.name]: parseInt(event.target.value)
    }
  }))
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:06:03