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

使用react-router导航URL变更但组件未渲染问题求助

问题原因及解决方案

你的问题不是React与React Router版本不兼容(React 18.2.0和React Router v6.9.0完全兼容),核心问题是路由配置逻辑错误:

你当前将Page2设为App组件的子路由,但App组件中没有渲染React Router v6要求的<Outlet />组件——这是承载子路由内容的专属容器,没有它,子路由组件就没有挂载的位置。同时从你的跳转需求来看,你需要的是页面切换效果,而非在HomePage下方嵌套显示Page2,因此更合理的是将两个页面设为同级路由。

具体修复步骤

方案一:调整为同级路由(推荐)

修改index.tsx中的路由配置,让HomePage和Page2成为平级路由:

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import reportWebVitals from './reportWebVitals';
import {
  createBrowserRouter,
  RouterProvider
} from 'react-router-dom';
import HomePage from './component/HomePage';
import Page2 from './component/Page2';

const root = ReactDOM.createRoot(
  document.getElementById('root') as HTMLElement
);

const router = createBrowserRouter([
  {
    path: "/",
    element: <HomePage />,
  },
  {
    path: "/page2",
    element: <Page2 />,
  },
]);

root.render(
  <React.StrictMode>
    <RouterProvider router={router} />
  </React.StrictMode>
);

方案二:保留嵌套路由并添加Outlet

如果你确实需要嵌套结构,修改App.tsx引入并渲染<Outlet />:

import React from 'react';
import './App.css';
import HomePage from './component/HomePage';
import { Outlet } from 'react-router-dom';

function App() {
  return (
    <div>
      <HomePage />
      {/* 子路由内容会渲染在此位置 */}
      <Outlet />
    </div>
  );
}

export default App;

注:此方式下访问/page2时,会同时显示HomePage和Page2的内容。

验证修复

修改完成后重启项目,点击按钮跳转时,URL变化的同时Page2组件会正常渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:55:02