1.安装依赖

  1. //1.安装依赖
  2. yarn add react-router-dom

2.配置路由

React中的路由配置到根组件中

  1. //2配置路由 app.js
  2. import React, { Component } from 'react';
  3. //要先导入
  4. import {
  5. BrowserRouter as Router,
  6. Switch,
  7. Route,
  8. Link
  9. } from "react-router-dom";
  10. import Home from './views/Home'
  11. import About from './views/About'
  12. import Detail from './views/Detail'
  13. class App extends Component {
  14. render() {
  15. return (
  16. <div>
  17. <Router>
  18. {/* exact:路由的严格匹配,只有路径为'/'才会加载对应的路由 */}
  19. <Route exact path="/" component={Home}></Route>
  20. <Route path="/about" component={About}></Route>
  21. <Route path="/detail" component={Detail}></Route>
  22. </Router>
  23. </div>
  24. );
  25. }
  26. }
  27. export default App;
  28. //exact严格匹配,只有path="/",才能访问。如果不写,只要path包含"/",都能访问

问题:route没有加Switch,那么每输入一次url,则对应的组件都加载一次

3.Switch解决路由组件重复加载的问题

  1. class App extends React.Component {
  2. render() {
  3. return (
  4. <Router>
  5. <div>
  6. <Switch>
  7. <Route path="/" component={Home}></Route>
  8. <Route path="/news" component={News}></Route>
  9. <Route path="/list" component={List}></Route>
  10. </Switch>
  11. </div>
  12. </Router>
  13. )
  14. }
  15. }

4.Link跳转

如果要用Link,要在router里面使用

  1. class App extends Component {
  2. render() {
  3. return (
  4. <div>
  5. <Router>
  6. //如果要使用link,要在router里面使用
  7. <ul>
  8. <li><Link to="/">首页</Link></li>
  9. <li><Link to="/about">About</Link></li>
  10. </ul>
  11. {/* exact:路由的严格匹配,只有路径为/才会加载对应的路由 */}
  12. {/* switch:只有对应的路由才会被加载 */}
  13. <Switch>
  14. <Route exact path="/" component={Home}></Route>
  15. <Route path="/about" component={About}></Route>
  16. <Route path="/detail" component={Detail}></Route>
  17. </Switch>
  18. </Router>
  19. </div>
  20. );
  21. }
  22. }