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

如何用const声明对象属性?React中formState.title赋值的实现方法

实现方案

现有代码问题

你当前直接对formState.title赋值的写法不符合React useState的使用规范:useState创建的状态不可直接修改,直接赋值不会触发组件重渲染,修改后的状态也不会生效。
你已经在initialState中声明了title作为formState的内置属性,不需要额外单独声明变量,只需要按规范更新状态即可,有两种实现方式:


方式1:复用现有setInput方法更新

直接调用你已经封装好的setInput函数传入对应键值即可,代码修改如下:

const userTitle = await API.graphql(graphqlOperation(getUserTitle, {id: userInfo.attributes.sub}))
// 替换掉原有直接赋值的代码
setInput('title', userTitle.data.getUser.title)

方式2:直接调用setFormState更新(推荐函数式写法避免闭包问题)

如果你不想复用setInput,也可以直接调用状态更新函数,函数式更新可以确保拿到最新的前序状态,避免闭包陷阱:

const userTitle = await API.graphql(graphqlOperation(getUserTitle, {id: userInfo.attributes.sub}))
setFormState(prevState => ({
  ...prevState,
  title: userTitle.data.getUser.title
}))

额外说明

如果你需要单独使用title变量,可以直接从formState中解构获取:

const { title } = formState

这样拿到的title会跟随formState的更新自动同步最新值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:45:03