React Router 基础组件一览

在 React Router 中有三种类型的组件:路由器组件,路由匹配组件,导航组件。这些组件都来自于 react-router-dom

路由器

对于每一个 React Router 应用来说,都应该有一个路由器组件,它们会为应用创建一个专用的 history 对象。针对 Web 项目,react-router-dom 提供了 <BrowserRouter><HashRouter>

import { BrowserRouter } from ‘react-router-dom‘;

ReactDOM.render((
  <BrowserRouter>
    <App/>
  </BrowserRouter>
), holder);

具体使用方式参见 BrowserRouterHashRouter

路由

React Router 提供了两种路由匹配组件:<Route><Switch>

Route 组件

路由匹配是通过比较 <Route> 组件的 path 属性和当前地址的 pathname 实现的,如果匹配则渲染当前路由组件的内容,如果不匹配则渲染 null。注意:没有提供 path 属性的 <Route> 组件将总是匹配。

import { Route } from ‘react-router-dom‘;

// when location = { pathname: ‘/about‘ }
<Route path=‘/about‘ component={About} /> // renders <About/>
<Route path=‘/contact‘ component={Contact} /> // renders null
<Route component={Always} /> // renders <Always/>

具体使用方式参见 Route

Switch 组件

<Switch> 组件用于给 <Route> 组件分组,可以将一组 <Route> 组件嵌套在 <Switch> 组件中。

那么,<Switch> 组件仅是为了给 <Route> 组件分组而诞生的吗?我们知道 <Route> 组件通过比较它的 path 属性和当前地址来判断是否渲染它的内容,所以就会存在多个 <Route> 匹配成功且都渲染它们内容的情况。为了避免这样的情况,<Switch> 组件就起了作用,它会迭代当中的 <Route> 组件,并选出第一个匹配的 <Route> 来渲染。

import { Switch, Route } from ‘react-router-dom‘;

<Switch>
  <Route exact path=‘/‘ component={Home} />
  <Route path=‘/about‘ component={About} />
  <Route path=‘/contact‘ component={Contact} />
  {/* when none of the above match, <NoMatch> will be rendered */}
  <Route component={NoMatch} />
</Switch>

具体使用方式参见 Switch

导航

React Router 提供了 <Link> 组件用于为应用提供链接,当渲染 <Link> 组件的时候,会在应用中渲染为 HTML 的 <a> 标签。

另外还有一个特殊的 <Link> 组件就是 <NavLink>,如果当前的地址与它的属性相匹配,它就会使用 "active" 样式。

任何时候如果您想要强制一个导航,就可以使用 <Redirect> 组件,当它被渲染的时候,就会导航到它的属性。

<Link to=‘/‘>Home</Link>
// <a href=‘/‘>Home</a>

// location = { pathname: ‘/react‘ }
<NavLink to=‘/react‘ activeClassName=‘hurray‘>React</NavLink>
// <a href=‘/react‘ className=‘hurray‘>React</a>

<Redirect to=‘/login‘/>

具体使用方式参见 LinkNavLinkRedirect

原文地址:https://www.cnblogs.com/levid-gc/p/8482215.html

时间: 2024-07-30 20:43:25

React Router 基础组件一览的相关文章

React漫漫学习路之 React Router

React Router 是一个基于 React 之上的强大路由库,它可以让你向应用中快速地添加视图和数据流,同时保持页面与 URL 间的同步. 目前react-router最新版本已经到4.0+,因为新的版本是一次非常大的改动,所以这里直接讨论4.0以上版本. 引用 react-router // React Router 核心 react-router-dom // 用于 DOM 绑定的 React Router react-router-native // 用于 React Native

Redux+React Router+Node.js全栈开发

详情请交流  QQ  709639943 01.Java深入微服务原理改造房产销售平台 02.跨平台混编框架 MUI 仿豆瓣电影 APP 03.Node.js入门到企业Web开发中的应用 04.Redux+React Router+Node.js全栈开发 05.Java秒杀系统方案优化 高性能高并发实战 06.企业级刚需Nginx入门,全面掌握Nginx配置+快速搭建高可用架构 07.快速上手Linux 玩转典型应用 08.全面系统讲解CSS 工作应用+面试一步搞定 09.Java Spring

[Web 前端] React Router v4 入坑指南

cp from : https://www.jianshu.com/p/6a45e2dfc9d9 万恶的根源 距离React Router v4 正式发布也已经过去三个月了,这周把一个React的架子做了升级,之前的路由用的还是v2.7.0版的,所以决定把路由也升级下,正好“尝尝鲜”... 江湖传言,目前官方同时维护 2.x 和 4.x 两个版本.(ヾ(??﹏?)??咦,此刻相信机智如我的你也会发现,ReactRouter v3 去哪儿了?整丢了??巴拉出锅了???敢不敢给我个完美的解释!?)事

React路由基础

HashRouter模式: BrowserRouter模式: 分享: 前言 react-router针对不同的使用场景衍生了不同的路由包,RN项目用react-router-native,web项目用react-router-dom.并且,不需要再重复引入react-router了.我搭建的是web项目环境,所以用的是react-router-dom. 本节代码是基于开始一个React项目(一)一个最简单的webpack配置和开始一个React项目(二) 彻底弄懂webpack-dev-serv

聊聊React高阶组件(Higher-Order Components)

使用 react已经有不短的时间了,最近看到关于 react高阶组件的一篇文章,看了之后顿时眼前一亮,对于我这种还在新手村晃荡.一切朝着打怪升级看齐的小喽啰来说,像这种难度不是太高同时门槛也不是那么低的东西如今可不多见了啊,是个不可多得的 zhuangbility的利器,自然不可轻易错过,遂深入了解了一番. 概述 高阶组件的定义 React 官网上对高阶组件的定义: 高阶部件是一种用于复用组件逻辑的高级技术,它并不是 React API的一部分,而是从React 演化而来的一种模式. 具体地说,

React jQuery公用组件celling的实现

目前较为流行的react确实有很多优点,例如虚拟dom,单向数据流状态机的思想.还有可复用组件化的思想等等.加上搭配jsx语法和es6,适应之后开发确实快捷很多,值得大家去一试.其实组件化的思想一直在提,原来的开发中也会抽一些公共的模块出来.但是react带来的思想冲击是革命性的,套用一句可能不太合适的话来,描述:万事万物皆组件,在这种思想的影响下,不管什么框架都可以抽一些公共的模块出来,应该秉持一种心态:任何代码都尽量不要重复写两遍,如果存在那么就可以考虑封装起来作为组件.当然不是一味的提倡盲

[转] React Router 使用教程

你会发现,它不是一个库,也不是一个框架,而是一个庞大的体系.想要发挥它的威力,整个技术栈都要配合它改造.你要学习一整套解决方案,从后端到前端,都是全新的做法. 举例来说,React 不使用 HTML,而使用 JSX .它打算抛弃 DOM,要求开发者不要使用任何 DOM 方法.它甚至还抛弃了 SQL ,自己发明了一套查询语言 GraphQL .当然,这些你都可以不用,React 照样运行,但是就发挥不出它的最大威力. 这样说吧,你只要用了 React,就会发现合理的选择就是,采用它的整个技术栈.

React Router简单Demo

简介 react router是使用react的时候首选的一个路由工具. 安装 react router包含react-router,react-router-dom和react-router-native这三个包,分别是路由核心组件和浏览器端组件和native端组件,所以我们需要安装react-router-dom npm install --save react-router-dom 安装后就可以直接使用了 https://codepen.io/pshrmn/pen/YZXZqM?edito

基础组件(一)

1.TextInput 允许用户输入文本的基础组件. 属性 onChangeText 接受一个函数,而此函数会在文本变化时被调用. onSubmitEditing 在文本被提交后(用户按下软键盘上的提交键)调用 实例: 12345678 <TextInput         style={{height: 40}}         placeholder="Type here to translate!"         onChangeText={(text) => th