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

React使用Router切换页面时两个页面内容同时显示如何解决

问题根因

  • 你把两个登录按钮的<Link>组件直接放在了<Router>根节点下,没有归属于任何路由规则,所以不管切换到哪个路径,这两个按钮都会一直展示,看起来就像多页面内容重叠
  • 缺少根路径/对应的主页路由配置,也没有补全Admin页面的路由和跳转配置
  • Admin登录的<Link>没有加to属性,无法触发路由跳转

修复步骤

第一步:新增主页组件Home.js,把两个登录按钮放到主页里

import React from 'react';
import { Link } from 'react-router-dom';

const Home = () =>{
    return(
        <div>
            <Link className="btn-success user-btn" to = "/user">User Login</Link>
            <Link className="btn-success admin-btn" to="/admin">Admin Login</Link>
        </div>
    );
}
export default Home;

第二步:修改App.js的路由配置

如果你用的是react-router-dom v5(也就是你代码里用的Switch对应的版本),修改后代码如下:

import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import Home from './Home';
import User from './User';
// 自行补全Admin组件的引入和实现
import Admin from './Admin';

function App() {
  return (
    <Router>
      <Switch>
        {/* 根路径对应主页,加exact避免匹配其他路由 */}
        <Route path="/" exact>
          <Home />
        </Route>
        <Route path="/user" exact>
          <User />
        </Route>
        <Route path="/admin" exact>
          <Admin />
        </Route>
      </Switch>
    </Router>
  );
}

export default App;

如果你用的是react-router-dom v6版本,注意v6已经废弃Switch换成Routes,配置参考如下:

import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Home from './Home';
import User from './User';
import Admin from './Admin';

function App() {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/user" element={<User />} />
        <Route path="/admin" element={<Admin />} />
      </Routes>
    </Router>
  );
}

修改后默认打开就会加载根路径的主页,仅展示两个登录按钮,点击对应按钮会跳转到对应路径,仅渲染对应页面的内容,不会出现内容重叠问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 04:36:01