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

ReactJS表单input输入值修改后state更新但UI不刷新问题咨询

问题原因

你没有遵守React状态更新的不可变原则。let track= user这行只是复制了原user对象的引用,你直接修改这个引用上的属性后再调用setUser,React做浅比较时会判定state没有发生变化,因此不会触发UI重渲染。

修复方案

把handleChange修改为如下写法:

const handleChange= (e)=>{
  const { name, value } = e.target;
  // 基于旧状态生成全新的对象返回
  setUser(prevState => ({
    ...prevState,
    [name]: value
  }));
}

额外优化建议

  • 初始化state时提前声明所有表单字段的默认值,避免触发受控组件转非受控的警告:
    const [user, setUser] = useState({firstInput: '', secondInput: ''});
    
  • 如果需要输入值为数字类型,可以把value转换为数字再存入state,避免字符串和数字混用的逻辑问题:
    [name]: Number(value)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:39:05