React-Route仅渲染首页,其余路由页面无法加载问题求助
问题解决方案
1. 移除无效的exact属性
React Router v6 已经彻底移除了exact属性,Routes组件会自动按最佳匹配规则渲染路由,保留exact不仅没用,还可能干扰匹配逻辑。修改后的路由代码如下:
const App = () => { return ( <> <Routes> <Route index element={<Home />} /> {/* index 等价于 path="/" 的精确匹配 */} <Route path="/Cardapio" element={<Cardapio />} /> <Route path="/Knowmore" element={<Knowmore />} /> <Route path="/About" element={<About />} /> <Route path="*" element={<p>Página não encontrada</p>} /> </Routes> </> ); }; export default App;
2. 确认用BrowserRouter包裹App组件
路由功能必须在BrowserRouter(或HashRouter)的上下文里才能生效,检查项目入口文件(比如index.js)是否有如下配置:
import { BrowserRouter } from 'react-router-dom'; import App from './App'; ReactDOM.render( <BrowserRouter> <App /> </BrowserRouter>, document.getElementById('root') );
没有这层包裹的话,路由系统根本无法工作,只会默认渲染首页组件。
3. 检查组件导入是否正确
确保所有页面组件(Home、Cardapio、Knowmore、About)都已正确导入到App.js中,比如:
import Home from './components/Home'; import Cardapio from './components/Cardapio'; import Knowmore from './components/Knowmore'; import About from './components/About';
导入路径错误或组件未正确导出,都会导致对应路由页面无法渲染。
4. 用Link组件跳转页面
必须使用React Router提供的Link组件跳转,不能直接用<a>标签(会触发页面硬刷新,破坏SPA特性):
import { Link } from 'react-router-dom'; // 正确跳转写法 <Link to="/About">About</Link>
如果用<a href="/About">,浏览器会硬刷新页面,若服务器没配置SPA fallback路由,就会出现页面无法加载的问题。
内容的提问来源于stack exchange,提问作者Gustavo Souza
相关产品推荐
相关产品推荐

