React路由

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React路由相关的知识,希望对你有一定的参考价值。

目录

1.SPA的理解

SPA(single page web application)单页面web应用
整个应用只有一个完整页面,但可以有多个组件
点击页面的链接,不会刷新页面,只会做页面的局部更新
数据都需要通过ajax请求获取,在前端异步实现

2.路由的理解

一个路由就是一个映射关系(key:value)
key为路径,value可能是function或component

前端路由:value为component,用于展示页面内容。path为/test时,当前路由组件就变为Test组件
注册路由:<Router path="/test" component=Test>
前端路由有hashhistory两种模式,hash路由模式是这样的:http://xxx.abc.com/#/xx
后端路由:value为function,用来处理客户端提交的请求,返回响应数据
注册路由:router.get(path,function(req,res))

3.React路由的基本使用

安装React-Router插件库,该库有三个版本:web、native、anywhere,这里我们用第一个

npm i react-router-dom //我下的版本为^6.2.1

 案例演示

首先安装Bootstrap,我这里的版本为3.3.5,放在/public/css目录下面

/public/index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
    <link rel="stylesheet" href="./css/bootstrap.css">
    <title></title>
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>

/src/index.js

import React from 'react'
import ReactDOM from 'react-dom'
import BrowserRouter from 'react-router-dom'
import App from './App'  //引入App组件

//渲染App到页面
ReactDOM.render(
  <BrowserRouter>
    <App/>
  </BrowserRouter>
,document.getElementById('root'));

/src/App.js

import React,Component from 'react'
import Link, Route, Routes from 'react-router-dom'
import About from './components/About'
import Home from './components/Home'

export default class App extends Component
  render()
    return (
      <div>
        <div className="row">
          <div className="col-xs-offset-2 col-xs-8">
            <div className="page-header"><h2>React Router Demo</h2></div>
          </div>
        </div>
        <div className="row">
          <div className="col-xs-2 col-xs-offset-2">
            <div className="list-group">
              /*  编写路由链接 */
              <Link className="list-group-item" to="/about">About</Link>
              <Link className="list-group-item" to="/home">Home</Link>
            </div>
          </div>
          <div className="col-xs-6">
            <div className="panel">
              <div className="panel-body">
                /* 注册路由 */
                <Routes>
                  <Route path="/" element=<Home/>/>
                  <Route path="/home" element=<Home/>/>
                  <Route path="/about" element=<About/>/>   
                </Routes>
              </div>
            </div>
          </div>
        </div>
      </div>
    )
  

/src/components/Home/index.jsx

import React,  Component  from 'react'

export default class Home extends Component 
  render() 
    return (
      <div>
        <h3>我是Home的内容</h3>
      </div>
    )
  

/src/components/About/index.jsx

import React,  Component  from 'react'

export default class About extends Component 
  render() 
    return (
      <div>
        <h3>我是About的内容</h3>
      </div>
    )
  

以上是关于React路由的主要内容,如果未能解决你的问题,请参考以下文章

react返回上一级路由为啥会刷新

react路由刷新后Cannot GET /home

react-route动态路由,它的子路由路径配置在啥地方

[react-router] react的路由和普通路由有什么区别?

React 学习笔记总结

react传值,路由