前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React---路由的使用(一)

React---路由的使用(一)

作者头像
半指温柔乐
发布2021-04-26 10:07:39
1.4K0
发布2021-04-26 10:07:39
举报
文章被收录于专栏:前端知识分享前端知识分享

一、SPA的理解

  1. 单页Web应用(single page web application,SPA)。
  2. 整个应用只有一个完整的页面
  3. 点击页面中的链接不会刷新页面,只会做页面的局部更新。
  4. 数据都需要通过ajax请求获取, 并在前端异步展现。

二、路由的理解

  1. 什么是路由?
    1. 一个路由就是一个映射关系(key:value)
    2. key为路径, value可能是function或component
  2. 路由分类
    1. 后端路由:

        1) 理解: value是function, 用来处理客户端提交的请求。

        2) 注册路由: router.get(path, function(req, res))

        3) 工作过程:当node接收到一个请求时, 根据请求路径找到匹配的路由, 调用路由中的函数来处理请求, 返回响应数据

      2. 前端路由:

        1) 浏览器端路由,value是component,用于展示页面内容。

        2) 注册路由: <Route path="/test" component={Test}>

        3) 工作过程:当浏览器的path变为/test时, 当前路由组件就会变为Test组件

二、react-router-dom的理解

  1. react的一个插件库。
  2. 专门用来实现一个SPA应用。
  3. 基于react的项目基本都会用到此库。

三、react-router-dom相关API

1. 内置组件

  1. <BrowserRouter>
  2. <HashRouter>
  3. <Route>
  4. <Redirect>
  5. <Link>
  6. <NavLink>
  7. <Switch>
  8. history对象
  9. match对象
  10. withRouter函数

2. 其它

  1. history对象
  2. match对象
  3. withRouter函数

3.路由的基本使用

1.明确好界面中的导航区、展示区

2.导航区的a标签改为Link标签

<Link to="/xxxxx">Demo</Link>

3.展示区写Route标签进行路径的匹配

<Route path='/xxxx' component={Demo}/>

4.<App>的最外侧包裹了一个<BrowserRouter>或<HashRouter>

四、路由组件与一般组件

1.写法不同:

一般组件:<Demo/>

路由组件:<Route path="/demo" component={Demo}/>

2.存放位置不同:

一般组件:components

路由组件:pages

3.接收到的props不同:

一般组件:写组件标签时传递了什么,就能收到什么

路由组件:接收到三个固定的属性

history:

go: ƒ go(n)

goBack: ƒ goBack()

goForward: ƒ goForward()

push: ƒ push(path, state)

replace: ƒ replace(path, state)

location:

pathname: "/about"

search: ""

state: undefined

match:

params: {}

path: "/about"

url: "/about"

五、代码

1.App.jsx

代码语言:javascript
复制
 1 import React, { Component } from 'react'
 2 import {Link,Route} from 'react-router-dom'
 3 import Home from './components/Home'
 4 import About from './components/About'
 5 
 6 export default class App extends Component {
 7     render() {
 8         return (
 9             <div>
10                 <div className="row">
11                     <div className="col-xs-offset-2 col-xs-8">
12                         <div className="page-header"><h2>React Router Demo</h2></div>
13                     </div>
14                 </div>
15                 <div className="row">
16                     <div className="col-xs-2 col-xs-offset-2">
17                         <div className="list-group">
18 
19                             {/* 原生html中,靠<a>跳转不同的页面 */}
20                             {/* <a className="list-group-item" href="./about.html">About</a>
21                             <a className="list-group-item active" href="./home.html">Home</a> */}
22 
23                             {/* 在React中靠路由链接实现切换组件--编写路由链接 */}
24                             <Link className="list-group-item" to="/about">About</Link>
25                             <Link className="list-group-item" to="/home">Home</Link>
26                         </div>
27                     </div>
28                     <div className="col-xs-6">
29                         <div className="panel">
30                             <div className="panel-body">
31                                 {/* 注册路由 */}
32                                 <Route path="/about" component={About}/>
33                                 <Route path="/home" component={Home}/>
34                             </div>
35                         </div>
36                     </div>
37                 </div>
38             </div>
39         )
40     }
41 }

2.index.js

代码语言:javascript
复制
 1 //引入react核心库
 2 import React from 'react'
 3 //引入ReactDOM
 4 import ReactDOM from 'react-dom'
 5 //
 6 import {BrowserRouter} from 'react-router-dom'
 7 //引入App
 8 import App from './App'
 9 
10 ReactDOM.render(
11     <BrowserRouter>
12         <App/>
13     </BrowserRouter>,
14     document.getElementById('root')
15 )

3.Home.jsx

代码语言:javascript
复制
1 import React, { Component } from 'react'
2 
3 export default class Home extends Component {
4     render() {
5         return (
6             <h3>我是Home的内容</h3>
7         )
8     }
9 }

4.About.jsx

代码语言:javascript
复制
1 import React, { Component } from 'react'
2 
3 export default class About extends Component {
4     render() {
5         return (
6             <h3>我是About的内容</h3>
7         )
8     }
9 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、SPA的理解
  • 二、路由的理解
  • 二、react-router-dom的理解
  • 三、react-router-dom相关API
    • 1. 内置组件
      • 2. 其它
        • 3.路由的基本使用
        • 四、路由组件与一般组件
        • 五、代码
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档