React Js页面间路由中的意外行为



这里我实现了一个简单的路由程序,用于在react js中的页面之间进行路由。我在运行时遇到了意外行为。

这是我的App.js代码

import LoginPage from './LoginPage'
import React from 'react';
import Home from './Home'
import About from './About'
import ContactUs from './ContactUs'
import './App.css';
import {BrowserRouter,Switch,Route,Link } from 'react-router-dom'

class App extends Component {
render() {
return (
<div className="App">
<BrowserRouter>

<div>
<ul>
<li>     <Link to="/Home">Home</Link>               </li> 
<li>     <Link to="/About">About</Link>          </li>   
<li>     <Link to="/ContactUs">ContactUs</Link>        </li> 
</ul>

{/**/} <Switch> 
<Route  path="/Home"></Route>
<Home/>
<Route path="/About"></Route>
<About/>
<Route path="/ContactUs"></Route>
<ContactUs/>

</Switch>
</div>
</BrowserRouter>
{/*<LoginPage/>*/} 
</div>
);
}
}
export default App;

  • 当我运行第一个代码时,Home.js页面应该是可见的。它来的时候没有任何问题主页

  • 这里的问题是,当我再次单击主页按钮时,它会显示一个只有路由开关的空页面。这是点击主页时输出的图片

  • Home.js代码

import React, {Component} from 'react';
class Home extends Component {
render() {
return (
<div className="Home_pg">
<h1>Home Page</h1>
<p>Home page content</p>
</div>
);
}
}
export default Home;

  • 我面临的主要问题是,当我在主页中单击"联系我们"或"关于"时,它不会在相应的页面上显示内容
  • 它显示的内容与主页相同
  • 单击"关于"或"联系美国"时的图像
  • 这是ContactUs.jsAbout.js的代码

import React, {Component} from 'react';
class About extends Component {
render() {
return (
<div >
<h1>About Page</h1>
<p> About content</p>
</div>
);
}
}
export default About;

import React, {Component} from 'react';
- **ContactUs.js**
class ContactUs extends Component {
render() {
return (
<div >
<h1>Contact Page</h1>
<p> Contact content</p>
</div>
);
}
}
export default ContactUs;

我不清楚为什么会发生这种事。我的类组件有问题吗?。任何关于这方面的建议或解决方案都将对我非常有帮助。

You have to put each component inside its relevant Route tag.
In addition I suggest to add two things:
- lazy loading for components.
- a Suspense tag with some loading indication (text or spinner).
import LoginPage from './LoginPage'
import React, { lazy, Suspense } from 'react';
import './App.css';
import {BrowserRouter,Switch,Route,Link } from 'react-router-dom';
const Home= lazy(() => import('./Home'));
const About = lazy(() => import('./About'));
const ContactUs = lazy(() => import('./ContactUs'));

class App extends Component {
render() {
return (
<div className="App">
<BrowserRouter>
<div>
<ul>
<li><Link to="/Home">Home</Link></li> 
<li><Link to="/About">About</Link></li>   
<li><Link to="/ContactUs">ContactUs</Link></li> 
</ul>
<Suspense fallback={<div>loading..</div>}
<Switch> 
<Route  path="/Home"><Home/></Route>
<Route path="/About"><About/></Route>
<Route path="/ContactUs"><ContactUs/></Route>
</Switch>
</Suspense>
</div>
</BrowserRouter>
</div>
);
}
}
export default App;

最新更新