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

React站点刷新后默认显示联系板块而非页头问题求助

问题根因

页面刷新后自动跳转至联系板块,是联系表单内Name输入框配置的autofocus属性导致的。
浏览器默认行为逻辑是:页面加载完成后,会自动滚动到当前设置了自动聚焦的表单元素位置,你的联系表单处在页面中下区域,因此每次刷新都会直接定位到该板块,该表现和部署环境无关,所以本地、线上会复现完全一致的问题。

修复方法

直接移除Name输入框上的autofocus属性即可解决问题,修改后的表单代码参考:

const Form = ({ emailSent, setEmailSent }) => {

  return (
    <Box component="form" ref={form} onSubmit={sendEmail} validate>
      <Grid container spacing={2}>
        <Grid item xs={12}>
          <TextField
            autoComplete="given-name"
            name="user_name"
            required
            fullWidth
            id="name"
            label="Name"
          />
        </Grid>
        <Grid item xs={12}>
          <TextField
            required
            fullWidth
            id="email"
            label="Email Address"
            name="user_email"
            autoComplete="email"
          />
        </Grid>
      </Grid>
      <Button
        type="submit"
        variant="outlined"
        sx={{ mt: 3, mb: 2, border: "1px solid #9F9F9F", color: "#9F9F9F" }}
      >
        send
      </Button>
    </Box>
  );
};

export default Form;
可选优化

如果需要确保所有场景下页面加载都默认展示顶部区域,可以在应用根组件挂载时增加强制回到顶部的逻辑,避免其他潜在的滚动错位问题:

import { useEffect } from 'react';

function App() {
  useEffect(() => {
    // 页面首次加载时强制滚动到页面顶部坐标
    window.scrollTo({ top: 0, left: 0 });
  }, []);

  // 保留原有路由、页面布局等代码
}

注意:MUI TextField 组件的自动聚焦属性为驼峰写法autoFocus,你代码中写的小写autofocus最终会被渲染为原生HTML的autofocus属性,效果一致,都会触发自动聚焦+滚动的逻辑。这类属性仅适合放在首屏可见的输入控件上,放在页面中下部的表单中必然会引发加载时的滚动错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:31:00