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

React Router v6:如何让SecondPage作为独立新页面打开?

React Router V6 路由显示问题解决

问题原因

你当前的App.js里,Header、Zagolovok、Footer等组件是直接渲染在根容器中,不属于任何路由规则。这意味着不管你切换到哪个路由,这些组件都会一直显示在页面上。而Routes组件里的路由元素会追加在这些固定组件之后渲染,所以SecondPage会出现在Footer下方,而不是替换整个页面内容。

解决步骤

1. 重构路由结构

把首页的所有固定组件(Header到Footer)放到一个路由的element中,作为首页内容。让Routes管理所有页面的切换逻辑,确保每个路由只渲染对应页面的内容。

修改后的App.js代码:

import React from 'react';
import "./App.css";
import { Route, Routes } from 'react-router-dom';
import { Header } from './Header';
import { Advantages } from './Advantages';
import { Zagolovok } from './Zagolovok';
import { Something } from './Something';
import { Courses } from './Courses';
import { Teachers } from './Teachers';
import { Fiq } from './Fiq';
import { Footer } from './Footer';
import { SecondPage } from './SecondPage';

function App() {
  return (
    <div className="App" style={{ color: 'white', fontFamily: 'Arial, sans-serif' }}>
      <Routes>
        {/* 首页路由:包含所有首页固定组件 */}
        <Route path="/" element={
          <>
            <Header />
            <Zagolovok />
            <Advantages />
            <Courses />
            <Teachers />
            <Something />
            <Fiq />
            <Footer />
          </>
        } />
        {/* Courses页面路由:按需决定是否包含公共组件 */}
        <Route path="/courses" element={
          <>
            <Header />
            <Courses />
            <Footer />
          </>
        } />
        {/* SecondPage页面路由:仅渲染自身内容 */}
        <Route path="/secondpage" element={<SecondPage />} />
      </Routes>
    </div>
  );
};

export default App;

2. 调整Link跳转行为(可选)

你的Courses页面里的Link加了target="_blank",会在新窗口打开页面。如果希望在当前页面跳转,去掉这个属性即可:

<Link to="/secondpage" rel="noopener noreferrer">
  <button className="register-button" onClick={handleRegistration}>
    Registration
  </button>
</Link>

补充说明

如果需要多个页面共享Header和Footer,可以把这两个组件抽出来放在Routes外面,路由切换只替换中间内容,示例如下:

function App() {
  return (
    <div className="App" style={{ color: 'white', fontFamily: 'Arial, sans-serif' }}>
      <Header />
      <Routes>
        <Route path="/" element={
          <>
            <Zagolovok />
            <Advantages />
            <Courses />
            <Teachers />
            <Something />
            <Fiq />
          </>
        } />
        <Route path="/courses" element={<Courses />} />
        <Route path="/secondpage" element={<SecondPage />} />
      </Routes>
      <Footer />
    </div>
  );
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:45:37