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

使用React Router时组件无法显示的技术问题求助

问题诊断与修复方案

嘿,我帮你找出问题所在啦!你遇到的URL变化但组件不渲染的情况,主要是两个小细节出错了:

1. Route组件的属性名写错了

React Router v5 中,Route 用来指定对应路径要渲染的组件时,属性名是小写的component,而你写成了大写的Component。这个大小写错误会让 React Router 无法识别你要挂载的组件,自然就看不到内容啦。

2. Menu组件里多余的Router包裹

你的 App 组件已经用BrowserRouter(别名 Router)包裹了整个路由相关区域,Menu 作为 Router 的子组件,完全不需要再自己套一层 Router,这会导致路由上下文冲突,也会干扰组件的正常渲染。

修改后的代码

App.js

import React, { Component } from 'react';
import './App.css';
import { Header } from './app/header';
import { Footer } from './app/footer';
import { Menu } from './app/menu';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import { Welcome } from './app/welcome';
import { Employees } from './app/employees';

class App extends Component {
  render() {
    return (
      <div>
        <Header></Header>
        <Router>
          <div>
            <Menu></Menu>
            <>
              {/* 修正属性名:Component → component */}
              <Route exact path="/" component={Welcome}></Route>
              <Route path="/employees" component={Employees}></Route>
            </>
          </div>
        </Router>
        <Footer name="Hardik Gondalia"></Footer>
      </div>
    )
  }
}

export default App;

Menu.jsx

import React, { Component } from 'react'
import { Link } from 'react-router-dom'; // 移除多余的BrowserRouter导入

export class Menu extends Component {
  render() {
    return (
      <ul>
        <li><Link to="/">Home</Link></li>
        <li><Link to="/employees">Employees</Link></li>
        <li><Link to="/add">Add Employee</Link></li>
      </ul>
    )
  }
}

修改完这两处之后,再点击导航链接,Welcome 和 Employees 组件应该就能正常显示啦。另外注意你 Menu 里还有一个/add的链接,之后如果需要实现添加员工的功能,记得在 App 里补上对应的 Route 配置哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:07:17