React路由和react-router-dom相关API

文章来源:尚硅谷B站文档,内补充些文字图片便于更好理解

5.1. 相关理解

5.1.1. SPA的理解

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

5.1.2. 路由的理解

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)注册路由:
3)工作过程:当浏览器的path变为/test时, 当前路由组件就会变为Test组件

路由的基本使用

1.明确好界面中的导航区、展示区
2.导航区的a标签改为Link标签

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

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

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

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

5.2.1. 内置组件

react-router-dom相关API


1.<BrowserRouter>//history

2.<HashRouter> //hash

3.<Route> //路由组件

    展示区写Route标签进行路径的匹配
   <Route path='/xxxx' component={Demo}/>
   
4.<Redirect>  //设置默认路径
<Redirect to="/xxx">  xxx为设置的默认显示路径

5.<Link>  //路由跳转 类似于JS中<a></a>标签

    导航区的a标签改为Link标签
	<Link to="/xxxxx">Demo</Link>
	
6.<NavLink>  //实现路由链接的高亮,通过activeClassName指定样式名 下方有详细说明NavLink

7.<Switch>  //提高路由匹配效率(单一匹配)  下方有详细说明Switch

NavLink

//Home组件无高亮   About组件有高亮
<NavLink  activeClassName="demo" className='list-group-item ' to="/home">Home</NavLink><br />
<NavLink className='list-group-item ' to="/about">About</NavLink>

在这里插入图片描述

在这里插入图片描述
Switch


import React, { Component } from "react";  //按需引入React中内容
import { Route,NavLink} from "react-router-dom" //按需引入react-router-dom
import Home from "./component/Home";  //引入Home 组件
import About from "./component/About";  //引入About 组件
import Test from "./component/Test";  //引入Test 组件

export default class App extends Component {
  render() {
    return (
      <div>
        {/* 标题 */}
        <div>
          <h3>React Router Demo</h3>
        </div>

        {/* 导航 */}
        <div>
          <div style={{ width: '100px' }}>
          //实现路由链接的高亮,通过activeClassName指定样式名
            <NavLink  activeClassName="demo" className='list-group-item ' to="/home">Home</NavLink><br />
            <NavLink className='list-group-item ' to="/about">About</NavLink>
          </div>
        </div>

        <div>
          <Route path="/home" component={Home} />
          <Route path="/about" component={About} />
          //引入Test 但注意这里使用的的/about路径 
          <Route path="/about" component={Test} />
        </div>
      </div>

    );
  }

}


运行界面显示
在这里插入图片描述
要想避免这种情况出现,课使用 包裹路由组件 进行样式隔离
1.引入Swich
2.包裹路由组件,进行样式隔离

//1引入Swich
import { Route,NavLink,Switch} from "react-router-dom"
//2包裹路由组件 进行样式隔离
<div>
          <Switch>
          <Route path="/home" component={Home} />
          <Route path="/about" component={About} />
          <Route path="/about" component={Test} />
          </Switch>
         
  </div>

Test样式被隔离在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端-rabbit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值