0

我真的需要一些帮助我试图找出问题三天但没有运气所以如果你能帮助我真的很感激....我正在尝试构建一个简单的应用程序与反应和 json-server 用于后端问题我的数据有嵌套对象,所以当我获取数据并尝试修改它时,抛出错误说嵌套 obj 中的 kay 未定义!如何更新状态的问题嵌套了 obj 是用户状态 const [getUser, setGetUser] = useState({ first_name: '', last_name: '', age: '', gender: '', address: { address1: '', address2: '', city: '', state: '', zip: '' }, order_total: { amount: 0 }, }); 这就是 onChnage fun 的工作原理 setGetUser({ ...getUser, [e.target.name]: e.target.

4

1 回答 1

0

当你写:

setGetUser({ ...getUser, [e.target.name]: e.target.value })

您正在向字典中添加新的键值对,而不是更新现有的键值对。如果您想更新现有的键值对,例如城市,您应该尝试以下操作:

  • 克隆字典
  • 用新信息修改克隆
  • setState(修正克隆字典)

例如:

  const [getUser, setUser] = useState({
    first_name: "",
    last_name: "",
    age: "",
    gender: "",
    address: {
      address1: "",
      address2: "",
      city: "",
      state: "",
      zip: ""
    },
    order_total: {
      amount: 0
    }
  });

const updateCityHandler = (city) => {
    let newDict = {...getUser}
    newDict.address.city = city
    setGetUser(newDict)
}
于 2020-10-18T00:25:24.257 回答