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

React路由问题:点击导航栏路径更新但对应组件未渲染求助

React Router 点击链接地址栏变化但组件不渲染的问题修复

我一眼就看到了两个关键问题导致你的路由组件无法正常渲染,咱们一步步来修复:


问题1:Route组件的属性名写错了

你在App.js里给Route传的是大写的Component,但React Router的Route组件接受的是小写的component属性——这个大小写错误会直接导致React无法识别你要渲染的目标组件。

问题2:重复嵌套了Router组件

你的index.js里已经用<Router>包裹了<App>,但App.js内部又再次嵌套了一层<Router>。多层Router会打乱路由上下文的传递,导致路径匹配逻辑失效。

额外小问题(不影响路由但建议修复)

React中DOM元素的类名应该用className而非原生的class,比如navbar组件里的<nav class="navbar...">要改成<nav className="navbar...">,避免控制台出现不必要的警告。


修改后的完整代码:

App.js(修复Route属性+移除重复Router)

import React, { Component } from "react";
import { Route, BrowserRouter as Router, Switch } from "react-router-dom";
import NavBar from "./Components/navBar";
import Header from "./Components/ddrHeader";
import Home from "./Components/home";
import Plan from "./Components/plan";
import Waiting from "./Components/waiting";
import "./App.css";

class App extends Component {
  render() {
    return (
      <Router>
        <React.Fragment>
          <NavBar />
          <Switch>
            {/* 把大写Component改为小写component */}
            <Route exact path="/" component={Home} />
            <Route path="/ddr" component={Header} />
            <Route path="/plan" component={Plan} />
            <Route path="/waiting" component={Waiting} />
          </Switch>
        </React.Fragment>
      </Router>
    );
  }
}

export default App;

index.js(移除外层重复的Router)

import React, { Component } from "react";
import ReactDOM from "react-dom";
import * as serviceWorker from "./serviceWorker";
import App from "./App";

ReactDOM.render(
  <App />,
  document.getElementById("root")
);
serviceWorker.register();

NavBar.js(修复class为className)

import React, { Component } from "react";
import { Link } from "react-router-dom";
import "bootstrap/dist/css/bootstrap.css";

class NavBar extends Component {
  render() {
    return (
      <nav className="navbar navbar-expand-lg navbar-dark bg-primary">
        <ul className="navbar-nav">
          <li className="nav-item active">
            <Link className="nav-link" to="/">
              Home<span className="sr-only">(current)</span>
            </Link>
          </li>
          <li className="nav-item">
            <Link className="nav-link" to="/ddr">
              DDR 
            </Link>
          </li>
          <li className="nav-item">
            <Link className="nav-link" to="/plan">
              Plan 
            </Link>
          </li>
          <li className="nav-item">
            <Link className="nav-link" to="/waiting">
              Waiting 
            </Link>
          </li>
        </ul>
      </nav>
    );
  }
}

export default NavBar;

完成这些修改后,点击导航栏的链接应该就能正常渲染对应的组件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:45:19