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

HashRouter无法正常工作,页面空白且URL无哈希标识

问题描述

以下是我的App.js代码:

// App.js
import React from 'react';
import './App.css';
import { HashRouter , Route } from 'react-router-dom';
import Home from './routes/Home';
import About from './routes/About';

function App() {
  return (
    <HashRouter>
      <Route exact path="/" component={Home}/>
      <Route path="/about" component={About} />
    </HashRouter>
  );
}

export default App;

运行npm start后,页面URL显示为localhost:3000/而非预期的localhost:3000/#/,且页面空白。手动访问localhost:3000/#/和localhost:3000/#/about依然是空白页面。

添加HashRouter前功能正常,试过用标签包裹Route无效,已确认package.json里有react-router-dom依赖,Home.js和About.js单独运行都没问题,怀疑问题出在HashRouter上。

排查与解决方案
  • 检查react-router-dom版本
    你当前的写法是v5及更早版本的语法,如果安装的是v6版本,Route组件的规则完全变更:v6要求Route必须嵌套在Routes组件内部,且不再支持component属性,需改用element传递组件实例。

    若为v6版本,修改代码如下:

    // App.js
    import React from 'react';
    import './App.css';
    import { HashRouter , Routes, Route } from 'react-router-dom';
    import Home from './routes/Home';
    import About from './routes/About';
    
    function App() {
      return (
        <HashRouter>
          <Routes>
            <Route path="/" element={<Home />} />
            <Route path="/about" element={<About />} />
          </Routes>
        </HashRouter>
      );
    }
    
    export default App;
    
  • 验证HashRouter导入正确性
    检查是否存在拼写错误,比如HashRouter的大小写是否准确,避免写成小写的hashRouter。

  • 清除缓存重启项目
    先删除node_modules/.cache文件夹,再重新执行npm start,排除开发服务器缓存导致的异常。

  • 检查组件渲染逻辑
    再次确认Home和About组件的根元素是否正常返回内容——虽然单独运行正常,但结合路由后,若组件内使用了useParams等路由专属hooks,可能因环境变化触发未处理的逻辑问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:37:01