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-
相关产品推荐
相关产品推荐

