使用useNavigate返回上一页需点击两次,请求分析问题原因
问题原因及解决办法
返回上一页需要点击两次,大概率是你的navigate("page")被执行了两次,导致浏览器历史记录里多了一条重复的页面条目,所以得点两次返回才能回到真正的上一页。常见触发场景和解决方法如下:
组件重复渲染导致多次调用跳转
如果navigate("page")直接写在组件顶层(没被useEffect包裹),组件每次重新渲染时都会执行这个跳转——比如组件因状态变化、父组件更新重新渲染,就会连续往历史栈里push两次页面。
解决:把跳转逻辑放到useEffect中,依赖项设为空数组,确保只执行一次:const navigate = useNavigate(); useEffect(() => { navigate("page"); }, []);用replace模式替代默认push
如果你不需要保留当前页面的历史记录,可以使用replace选项,跳转时会替换当前的历史条目而非新增。这样返回时直接回到上一个页面,无需点击两次:navigate("page", { replace: true });排查重复触发的逻辑
检查代码里是否有重复绑定事件(比如按钮点击事件绑了两次)、或者某个状态变化导致跳转逻辑被多次触发的情况,避免navigate被重复调用。
内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture
相关产品推荐
相关产品推荐

