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

React useState切换器触发重渲染后状态重置为false问题求助

问题根源

你的问题不是组件重渲染导致状态重置,而是点击a标签触发了页面刷新——<a href="">的默认行为是跳转当前页面(空路径会触发刷新),页面刷新后整个React应用重新挂载,所有组件状态都会回到初始值,所以toggle被重置为false。

修复方案

有两种简单的修复方式:

1. 阻止a标签的默认跳转行为

修改点击事件,添加preventDefault()阻止页面刷新:

<a href="" onClick={(e) => {
  e.preventDefault();
  setToggle();
}}>Not yet signed up? Register here</a>

2. 替换为语义化的按钮元素

这个元素的作用是触发交互而非跳转,用<button>更符合语义,也不用处理默认跳转:

<button onClick={setToggle} style={{ 
  background: 'none', 
  border: 'none', 
  color: 'blue', 
  textDecoration: 'underline', 
  cursor: 'pointer' 
}}>
  Not yet signed up? Register here
</button>

(可以通过外部CSS替代内联样式,让按钮外观和链接一致)

补充说明

你的useToggle Hook逻辑完全没问题——它基于React的useState维护状态,只要组件没有被卸载重挂载,状态就会被正确保留。之前的状态重置完全是页面刷新导致的组件重新初始化,和Hook本身无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:23:24