IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> react路由最基本使用 -> 正文阅读

[JavaScript知识库]react路由最基本使用

引入依赖包

npm install react-router-dom react-router-config --save
  • react-router是路由的核心库,包含Router组件等
  • react-router-dom 当在浏览器中使用react-router时,引入该依赖。
    该依赖包是绑定了DOM的react-router,比react-router多出了<Link><BrowserRouter>等DOM类组件,因此引入了此包后就不用再引入react-router
  • react-router-config 是 react-router的一个插件,能够实现集中式路由配置

各个组件含义

  • <Router> 想要在页面中用路由导航到其他页面,需要在所有组件的最外层套上<BrowserRouter>或<HashRouter>作为容器
  • <Route> 路由渲染,即展示跳转后的路由,他有许多属性
    • path="/" 页面的路径
    • render: () => (
      <Redirect to={"/recommend"}/>
      )
      path路径下渲染的内容
    • component=“Recommend” path路径下渲染的组件
    • exact: true 严格匹配,只有当路径刚好为"/“时才匹配。默认为false时,”/recommend"也会匹配"/"路径
      每个<Route>对应的路由组件默认会收到三个参数分别是history、location和match
  • <Link> 路由跳转。其实就是实现了<a>标签,但是取消了a标签的默认跳转操作,只改变了url。<Link>中的to属性为跳转到的路径,相当于a标签中的href
  • <NavLink> <Link>标签是没有高亮效果的,导航栏在不同页面想要有高亮效果activeClassName,需使用NavLink标签
  • IndexRoute 设置一个默认页面

路由的模糊匹配

假如有<Link path='/home/a/b'>Home</Link>
对应的<Route path='/home' component={Home}>
<Link>中路由范围较为精确,<Route>中路由范围更宽泛,会导致模糊匹配,该<Route>会展示’/home/a/b’的内容。
默认情况下路由会模糊匹配,要想精准匹配想要跳转的链接,可加上‘exact’属性
<Route exact={true} path='/home' component={Home}>该<Route>只能渲染正好为’\home’的path

给路由组件传参

  1. params
    <Link path={`/home/${myparams1}/${myparms2}`}>Home</Link> 携带参数
    <Route path=’/home/:myparams1/:myparams2’ component={Home}> 声明接收
    在Home组件中this.props.match.params可得到参数对象
  2. search
    <Link path={`/home?myparams1=${myparams1}&myparams2=${myparms2}`}>Home</Link> 携带参数
    在Home组件中this.props.location.search形式为"?myparams1=1&myparams2=2"
    对于search的这种urlEncoded形式,引入querystring库对其解码得到参数对象
    import qs from querystring
    qs.parse(this.props.location.search.slice(1))
  3. state
    前两种参数传递方式都会在url中显式携带参数,state方式则不会
    <Link>中to是一个对象,参数放在state对象中,
    <Link to={{pathname:‘home’, state:{myparams1:myparams1, myparams2:myparams2}}}>Home</Link>
    在Home组件中this.props.location.state || {}取得参数对象

withRouter

withRouter可以让一般组件拥有路由组件特有API,如history、location等,返回值为一个新组件

import {withRouter} from 'react-router-dom'
class Header extends Component {
 ……
}
export default withRouter(Header)
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-18 17:18:34  更:2021-10-18 17:19:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 23:14:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码