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

如何实现React中state数组的永久更新,避免状态回退?

问题原因

state短暂出现后回退是表单默认提交行为触发页面重载导致的:

  • 放在<form>标签内的<button>如果未显式指定type属性,默认type值为submit
  • 点击submit类型按钮会触发表单默认提交逻辑,浏览器会自动刷新当前页面,所有React组件的state都会被重置为初始值,因此你刚更新的details只会在页面刷新前短暂显示
修复方案

任选以下任意一种方法即可解决:

方案1:阻止表单默认提交事件

修改updateDetails函数,接收事件参数并调用preventDefault()取消默认行为:

const updateDetails = (e) => {
  e.preventDefault()
  setDetails([username, password])
}

方案2:将按钮类型指定为普通按钮

给<button>显式设置type="button",避免触发表单提交逻辑:

<button type="button" onClick={updateDetails}>Submit</button>
补充优化建议

你当前直接将数组details放在<h1>中渲染,会被自动转为逗号拼接的字符串,如果你需要更清晰的展示效果,可以调整为:

<h1>用户名:{details[0]} 密码:{details[1]}</h1>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:30:03