[英]Why Reactjs doesn't load component content?
I'm working on a reactjs front end, and in my app.js i have this following code :我正在研究 reactjs 前端,在我的 app.js 中,我有以下代码:
import React from 'react';
import {BrowserRouter as Router,Route,Switch, Link} from 'react-router-dom';
import Login from './Components/Login.component';
import Register from './Components/Register.component';
import Home from './Components/Home.component';
import Services from './Components/Services.component';
import 'bootstrap/dist/css/bootstrap.css';
import './App.css';
function Index() {
return(
<div className="container-fluid index-container" style={{backgroundImage:"url(indexBackground.png)"}}>
<nav className="navbar navbar-expand-lg navbar-light index-navbar">
<a className="navbar-brand" href="#">
<img className="img-fluid" width="110" src="logo.png" alt="logo"></img>
</a>
<button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span className="navbar-toggler-icon"></span>
</button>
<div className="collapse navbar-collapse" id="navbarSupportedContent">
<ul className="navbar-nav ml-auto">
<li className="nav-item">
<a className="nav-link" href="#">Acceuil</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">Actualités</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">Nos services</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">Nos vehicules</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">Contactez-nous</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">Blog</a>
</li>
<li className="nav-item">
<a className="nav-link" href="#">Se connecter</a>
</li>
</ul>
</div>
</nav>
<div id="index-container-x" className="row d-flex align-items-center" style={{display:"none"}}>
<div className="col-lg-6 index-container-x justify-content-center">
<h1 className="white-heading">Découvrez la location longue durée nouvelle génération</h1>
<hr style={{borderColor:"#fff"}} />
<Link className="btn btn-primary" to="/Register">S'abonner</Link>
</div>
</div>
</div>
)
}
function App() {
return (
<Router>
<Switch>
<Route exact path="/">
<Index />
</Route>
<Route path="/Login">
<Login />
</Route>
<Route path="/Register">
<Register />
</Route>
<Route path="/Home">
<Home />
</Route>
<Route path="/Services">
<Services />
</Route>
</Switch>
</Router>
);
}
export default App;
I also have a home component with the following code :我还有一个带有以下代码的家庭组件:
import React, { Component } from 'react';
import 'bootstrap/dist/css/bootstrap.css';
import '../App.css';
import {BrowserRouter as Router } from 'react-router-dom';
import Navbar from './Navbar.component';
import Chart from './Chart.component';
class Home extends Component {
render() {
return(
<Router>
<Navbar />
<Chart />
</Router>
)
}
}
export default Home;
Here is my navbar component :这是我的导航栏组件:
import React, { Component } from 'react';
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap/dist/js/bootstrap.js';
import '../App.css';
import {BrowserRouter as Router,Route, Link } from 'react-router-dom';
class Navbar extends Component {
render() {
return(
<nav className="navbar navbar-expand-lg navbar-light blue-nav">
<Link className="navbar-brand" to="/Home">
<img alt="nothing" width="110" src="logo.png"></img>
</Link>
<button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span className="navbar-toggler-icon"></span>
</button>
<div className="collapse navbar-collapse" id="navbarSupportedContent">
<ul className="navbar-nav mr-auto">
<li className="nav-item">
<Link className="nav-link" to="/Home"><i className="fas fa-tachometer-alt"></i> Tableau de bord</Link>
</li>
<li className="nav-item">
<Link className="nav-link" to="/Services"><i className="fas fa-hand-holding-heart"></i> Nos services</Link>
</li>
<li className="nav-item">
<Link className="nav-link" to="/Contracts"><i className="fas fa-folder-open"></i> Mes contrats</Link>
</li>
<li className="nav-item">
<Link className="nav-link" to="/Vehicles"><i className="fas fa-car"></i> Mes vehicules</Link>
</li>
<li className="nav-item">
<Link className="nav-link" to="/Notifications"><i className="fas fa-bell"></i> Notifications <span className="badge badge-danger">4</span></Link>
</li>
<li className="nav-item">
<Link className="nav-link" to="/Support"><i className="fas fa-question-circle"></i> Aide</Link>
</li>
</ul>
<ul className="navbar-nav ml-auto">
<li className="nav-item dropdown">
<Link className="nav-link dropdown-toggle" to="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i className="fas fa-user-cog"></i> Compte
</Link>
<div className="dropdown-menu dropdown-menux" aria-labelledby="navbarDropdown">
<Link className="dropdown-item" to="#"><i className="fas fa-user-circle"></i> Modifier mon profile</Link>
<Link className="dropdown-item" to="#"><i className="fas fa-lock"></i> Sécurité</Link>
<Link className="dropdown-item" to="#"><i className="fas fa-cogs"></i> Paramètres</Link>
<div className="dropdown-divider"></div>
<Link className="dropdown-item" to="#"><i className="fas fa-power-off"></i> Se déconnecter</Link>
</div>
</li>
</ul>
</div>
</nav>
)
}
}
export default Navbar;
Now what i want to do is when i click the LINK in the navbar (services Or Home) i want that route's component to be rendered, but the problem i have in the browser link it showes localhost:3000/Services but the content of Home component still shows up like there was never a new page navigation.现在我想要做的是当我单击导航栏中的链接(服务或主页)时,我希望渲染该路由的组件,但是我在浏览器链接中遇到的问题显示 localhost:3000/Services 但主页的内容组件仍然显示,就像从来没有新的页面导航一样。
Here is my services component :这是我的服务组件:
import React, { Component } from 'react';
import 'bootstrap/dist/css/bootstrap.css';
import '../App.css';
import {BrowserRouter as Router } from 'react-router-dom';
import Navbar from './Navbar.component';
class Services extends Component {
constructor(props){
super(props);
}
render() {
return(
<Router>
<Navbar />
</Router>
)
}
}
export default Services;
Here is some images :这是一些图片:
1st image is for the Home before the click of the Link : 2nd image is for the Services page after the link is clicked : (no services content)第一张图片是点击链接前的主页:第二张图片是点击链接后的服务页面:(没有服务内容)
You need to move Navbar
to main App.js and don't use Router
inside Router (ie Home and Services pages)你需要移动
Navbar
主App.js和不使用Router
内部路由器(即主页和服务页)
function App() { const key = Date.now(); return ( <Router> <Navbar /> <Switch> <Route key={key} exact path="/"> <Index /> </Route> <Route key={key} exact path="/Login"> <Login /> </Route> <Route key={key} exact path="/Register"> <Register /> </Route> <Route key={key} exact path="/Home"> <Home /> </Route> <Route key={key} exact path="/Services"> <Services /> </Route> </Switch> </Router> ); } export default App; class Home extends Component { render() { return(<Chart />) } } export default Home; class Services extends Component { render() { return(<ServciesContent />) } } export default Home;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.