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

React Router DOM问题:点击后URL更新但页面内容未刷新

问题原因

你同时混用了react-router-dom v6的两种路由配置方案:在index.tsx中用BrowserRouter包裹App,又在routes.tsx中用createBrowserRouter定义路由结构。这两种方式不能同时使用,导致路由匹配逻辑冲突,只会更新URL但不会渲染对应页面组件。

解决方法

方法一:使用RouterProvider(v6推荐方案)

这种方式需要用RouterProvider替代BrowserRouter,直接使用你在routes.tsx中定义好的router配置:

修改src/index.tsx:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import reportWebVitals from './reportWebVitals';
import { RouterProvider } from 'react-router-dom';
import { router } from './Routes/routes';

ReactDOM.render(
  <React.StrictMode>
    <RouterProvider router={router} />
  </React.StrictMode>,
  document.getElementById('root')
);

reportWebVitals();

这样就能让createBrowserRouter定义的路由结构生效,点击链接时页面内容会正常更新。

方法二:使用传统Routes/Route组件配置

如果你不想用createBrowserRouter,可以删除routes.tsx,直接在App.tsx中用Routes和Route组件配置路由:

修改src/App.tsx:

import React from "react";
import { Link, Routes, Route } from "react-router-dom";
import "./App.css";
import HomePage from "./Pages/HomePage/HomePage";
import SearchPage from "./Pages/SearchPage/SearchPage";
import CompanyPage from "./Pages/CompanyPage/CompanyPage";

function App() {
  return (
    <>
        <Link to="/company">Go to Company Page</Link>
        <br></br>
        <Link to ="/"> App tsx</Link>
        <br></br>
        <Link to="/search"> Search Page</Link>
        
        <Routes>
          <Route path="/" element={<HomePage />} />
          <Route path="/search" element={<SearchPage />} />
          <Route path="/company" element={<CompanyPage />} />
        </Routes>
    </>
  );
}

export default App;

同时保持src/index.tsx的BrowserRouter包裹逻辑即可:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { BrowserRouter as Router } from 'react-router-dom';

ReactDOM.render(
  <React.StrictMode>
    <Router>
      <App />
    </Router>
  </React.StrictMode>,
  document.getElementById('root')
);

reportWebVitals();

两种方法任选其一,都能解决URL更新但页面内容不变化的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:58:29