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

React中scrollIntoView失效:页面重载且URL追加?问题求助

问题原因

你的PostProperty页面中,触发滚动的按钮都嵌套在<form>标签内,而HTML里<button>的默认type是submit——点击这类按钮会自动触发表单的默认提交行为,发起GET请求导致页面重载,URL末尾追加?,同时路由无法匹配这个带参数的路径,所以出现"No routes matched location"错误。

反观登录页面,触发滚动的Sign Up/Log in按钮都不在<form>标签内部,自然不会触发表单提交,所以滚动逻辑正常运行。

解决方法

有三种可行的修复方式:

1. 给按钮指定type="button"

修改按钮代码,明确设置按钮类型为普通按钮,避免触发表单提交:

<button type="button" onClick={handleOneTwo}>
  btn
</button>

<button type="button" onClick={handleTwoOne}>
  backbtn
</button>

2. 在点击事件中阻止默认行为

在滚动处理函数里添加e.preventDefault(),拦截表单的默认提交动作:

const handleOneTwo = (e) => {
  e.preventDefault(); // 阻止表单默认提交
  stepTwo.current?.scrollIntoView({ block: "nearest", behavior: 'smooth' });
};

const handleTwoOne = (e) => {
  e.preventDefault();
  stepOne.current?.scrollIntoView({ block: "nearest", behavior: 'smooth' });
};

3. 移除不必要的<form>标签

如果这些<form>标签只是用来做样式布局,没有实际表单提交需求,可以直接删除,这样按钮就不会触发表单提交逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:55:20