主页

React 学习路由(使用集中式路由)

2024-06-06 07:55AM

参考:https://v5.reactrouter.com/web/example/route-config

在学习React路由的路上踩了很多的坑,发现路由对于项目是非常重要的,所以要重点学习一下。

1.安装 react-router-dom 

npm install react-router-dom

或者

yarn install react-router-dom

我的React项目配置如下:

package.json文件:
  1 {
  2   "name": "blog_front",    
  3   "version": "0.1.0",      
  4   "private": true,
  5   "dependencies": {        
  6     "@testing-library/jest-dom": "^5.17.0",
  7     "@testing-library/react": "^13.4.0",
  8     "@testing-library/user-event": "^13.5.0",
  9     "axios": "^0.27.2",    
 10     "react": "^18.2.0",
 11     "react-axios": "^2.0.6",
 12     "react-dom": "^18.2.0",
 13     "react-router-dom": "^6.17.0",  
 14     "react-scripts": "5.0.1",
 15     "tdesign-react": "^1.3.0",
 16     "web-vitals": "^2.1.4"
 17   },
 18   "scripts": {
 19     "start": "react-scripts start", 
 20     "build": "react-scripts build", 
 21     "test": "react-scripts test",   
 22     "eject": "react-scripts eject"  
 23   },
 24   "eslintConfig": {
 25     "extends": [
 26       "react-app",
 27       "react-app/jest"
 28     ]
 29   },
 30   "browserslist": {
 31     "production": [
 32       ">0.2%",
 33       "not dead",
 34       "not op_mini all"
 35     ],
 36     "development": [
 37       "last 1 chrome version",
 38       "last 1 firefox version",
 39       "last 1 safari version"
 40     ]
 41   }
 42 }

2.实现路由:

代码文件:src/App.js

注意:react-router-dom版本在6.0及以上,Switch”被替换为路由“Routes”,您需要更新导入。“component”被更新为“element”来声明路由。

import React from 'react';

//导入“react-router-dom"组件

import {  BrowserRouter as Router,  Routes,  Route,  Link } from "react-router-dom";

import AboutMe from './pages/AboutMe';

import BlogList from './article/index';

import Hi from './pages/Hi';

// 定义路由数组routes(这是一个包含多个路由对象的数组,每个对象定义了一个路径(path)和对应的React组件(element))

const routes =[
  {
    path: '/about_me',
    element: <AboutMe/>,
  },
  {
    path: '/blog_list',
    element: <BlogList/>,
  },
  {
    path: '/hi',
    element: <Hi/>
  }
];

// 定义App组件

function App() {
  return (

    // <Router>包装整个应用程序,提供路由功能,这里使用的是BrowserRouter,它根据浏览器的URL来渲染不同的组件
    <Router>

      // <div> 包含导航连接件和路由渲染区域的容器
      <div>

        // 一个无序列表,包含导航链接
        <ul>

          // 列表项,包含<Link>组件
          <li>

             // <Link> React Router的链接组件,用于导航到应用程序的不同部分。当用户点击链接时,URL将更新,而页面不会重新加载
            <Link to='/blog_list'>Blog List</Link>
          </li>
          <li>
            <Link to='/about_me'>About Me</Link>
          </li>

          <li>
            <Link to='/hi'>hi</Link>
          </li>
        </ul>

        // 包含多个<Route>组件容器,用于定义应用程序的路由逻辑
        <Routes>
        {

          // routes.map(...)使用map函数遍历routes数组,为每个路由对象生成一个<Route>组件
          routes.map(function(route, i) {
            return (

              // 为每个路由生成<Route>组件定义了路径和要渲染的组件
              <Route path={route.path} element={route.element} />
            )
          })
        }
        </Routes>
      </div>
    </Router>
  );
};

export default App;

3.页面内容:

1) Hi文件代码如下:

import React, { Component } from 'react';

export default class Hi extends Component {

  render() {

    return (
      <p> HI hihihi, from component </p>
    );
  }
}

2) About文件代码如下:

import React from 'react';

function AboutMe() {
  return (
    <div>
      <p>Hello World!</p>
    </div>
  );
};

export default AboutMe;

4.Blog List文件,我就不在这里展示了,我们来看一下页面效果:

1)'/'页面

 

2)'/blog_list'页面

3)'/about_me'页面

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论