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

使用useNavigate钩子后如何实现独立页面跳转渲染

问题解决:React路由跳转后页面内容重叠

问题原因

你当前的App组件中,TopHeader、SlideShow、Content、Cards、Footer这些主页面元素直接放在Router内部但Routes外部,这意味着无论当前路由是什么,这些元素都会始终渲染,所以跳转后目标页面内容会和它们叠加显示。

解决方案

把主页面的内容封装成单独组件,然后在Routes中添加根路径路由,让主内容和其他页面路由平级,路由切换时只会渲染对应路径的组件。

步骤1:创建Home组件

新建components/Home.js文件,将原App里的主内容移进去:

import React from 'react';
import TopHeader from './TopHeader';
import SlideShow from './SlideShow';
import Content from './Content';
import Cards from './Cards';
import Footer from './Footer';

const Home = () => {
  return (
    <>
      <TopHeader />
      <SlideShow />
      <Content />
      <Cards />
      <Footer />
    </>
  );
};

export default Home;

步骤2:修改App组件的路由配置

更新App.js,将主内容替换为根路径的Route,所有路由都放在Routes内部:

import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Home from './components/Home';
import Portofoliu from './pages/Portofoliu';
import Universitate from './pages/Universitate';

const App = () => {
  return (
    <div>
      <Router>
        <Routes>
          {/* 根路径渲染主页面 */}
          <Route path='/' element={<Home />} />
          {/* 其他页面路由 */}
          <Route path='/portofoliu' element={<Portofoliu />} />
          <Route path='/universitate' element={<Universitate />} />
        </Routes>
      </Router>
    </div>
  );
};

export default App;

可选优化:全局共享元素

如果希望TopHeader、Footer这类元素在所有页面都显示,只需把它们放在Routes外面、Router内部即可:

const App = () => {
  return (
    <div>
      <Router>
        <TopHeader /> {/* 所有页面都显示头部 */}
        <Routes>
          <Route path='/' element={<Home />} />
          <Route path='/portofoliu' element={<Portofoliu />} />
          <Route path='/universitate' element={<Universitate />} />
        </Routes>
        <Footer /> {/* 所有页面都显示底部 */}
      </Router>
    </div>
  );
};

修改完成后,点击按钮跳转时,就只会渲染对应页面的内容,不会再和主页面元素重叠。

内容的提问来源于stack exchange,提问作者Radulescu Mihai-Alexandru

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:40:37