React Router v4使用详解

这次给大家带来React Router v4使用详解,React Router v4使用的注意事项有哪些,下面就是实战案例,一起来看一下。

江湖传言,目前官方同时维护 2.x 和 4.x 两个版本。(ヾ(。ꏿ﹏ꏿ)ノ゙咦,此刻相信机智如我的你也会发现,ReactRouter v3 去哪儿了?整丢了??巴拉出锅了???敢不敢给我个完美的解释!?)事实上 3.x 版本相比于 2.x 并没有引入任何新的特性,只是将 2.x 版本中部分废弃 API 的 warning 移除掉而已。按照规划,没有历史包袱的新项目想要使用稳定版的 ReactRouter 时,应该使用 ReactRouter 3.x。目前 3.x 版本也还处于 beta 阶段,不过会先于 4.x 版本正式发布。如果你已经在使用 2.x 的版本,那么升级 3.x 将不会有任何额外的代码变动。

礼貌性简介下

React Router v4使用详解

React Router V4 相较于前面三个版本有根本性变化,首先是遵循 Just Component 的 API 设计理念,其次API方面也精简了不少,对新手来说降低了学习难度,但如果是对之前项目的重构,嗯,简直无**可说。本次升级的主要特点如下:

声明式(Declarative)

可组合 (Composability)

React Router V4 遵循了 React 的理念: 万物皆组件 。因此 升级之后的 Route、Link、Switch等都是一个普通的组件。

React Router V4 基于 Lerna 管理多个 Repository。在此代码库包括:

react-router React Router 核心

react-router-dom 用于 DOM 绑定的 React Router

react-router-native 用于 React Native 的 React Router

react-router-redux React Router 和 Redux 的集成

react-router-config 静态路由配置帮助助手

插件初引入

通常我们在 React 的使用中,一般要引入两个包, react 和  react-dom ,那么 react-router 和 react-router-dom 是不是两个都要引用呢? 注意,前方高能,入门第一坑就在这里 。他们两个只要引用一个就行了,不同之处就是后者比前者多出了 这样的 DOM 类组件。因此我们只需引用 react-router-dom 这个包就OK了。当然,如果搭配 redux ,你还需要使用 react-router-redux 。

主要组件简介

在4.0之前版本的 API 中, 组件的 children 只能是 React Router 提供的各种组件,如 、、 等。而在 React Router 4 中,你可以将各种组件及标签放进 组件中,他的角色也更像是 Redux 中的 。**不同的是 是用来保持与 store 的更新,而 是用来保持与 location 的同步。**示例如下:

// 示例1 

  • 首页
  • 关于
  • 主题列表

登录后复制

Router是所有路由组件共用的底层接口,一般我们的应用并不会使用这个接口,而是使用高级的路由:

:使用 HTML5 提供的 history API 来保持 UI 和 URL 的同步;

:使用 URL 的 hash (例如:window.location.hash) 来保持 UI 和 URL 的同步;

:能在内存保存你 “URL” 的历史纪录(并没有对地址栏读写);

:为使用React Native提供路由支持;

StaticRouter> :从不会改变地址;

TIPS:算是第二坑吧,和之前的Router不一样,这里 组件下只允许存在一个子元素,如存在多个则会报错。

反面典型在这里:

  
  • 首页
  • 关于
  • 主题列表

登录后复制

没错,示例2在没有

爸爸的保护下,会报如下异常信息:

React Router v4使用详解

我们知道,Route组件主要的作用就是当一个location匹配路由的path时,渲染某些UI。示例如下:

 

// 如果应用的地址是/,那么相应的UI会类似这个样子:

// 如果应用的地址是/news,那么相应的UI就会成为这个样子:

登录后复制

组件有如下属性:

path(string): 路由匹配路径。(没有path属性的Route 总是会 匹配);

exact(bool):为true时,则要求路径与location.pathname必须完全匹配;

strict(bool):true的时候,有结尾斜线的路径只能匹配有斜线的location.pathname;

再次奉上两个鲜活的例子:

exact配置:

路径 location.pathname exact 是否匹配

/one/one/twotrue否/one/one/twofalse是

 strict配置:

路径 location.pathname strict 是否匹配

/one//onetrue否/one//one/true是/one//one/twotrue是

同时,新版的路由为 提供了三种渲染内容的方法:

:在地址匹配的时候React的组件才会被渲染,route props也会随着一起被渲染;

:这种方式对于内联渲染和包装组件却不引起意料之外的重新挂载特别方便;

:与render属性的工作方式基本一样,除了它是不管地址匹配与否都会被调用;

第一种方式没啥可说的,和之前一样,这里我们重点看下 的渲染方式:

// 行内渲染示例 

Home

}/>// 包装/合成const FadingRoute = ({ component: Component, ...rest }) => ( ( )}/>)

登录后复制

TIPS: 第三坑! 的优先级要比 高,所以不要在同一个 中同时使用这两个属性。

和之前版本没太大区别,重点看下组件属性:

to(string/object):要跳转的路径或地址;

replace(bool): 为 true 时 ,点击链接后将使用新地址替换掉访问历史记录里面的原地址; 为 false 时 ,点击链接后将在原有访问历史记录的基础上添加一个新的纪录。 默认为 false

示例如下:

// Link组件示例// to为string关于// to为obj// replace 

登录后复制

是 的一个特定版本, 会在匹配上当前 URL 的时候会给已经渲染的元素添加样式参数,组件属性:

activeClassName(string):设置选中样式,默认值为 active;

activeStyle(object):当元素被选中时, 为此元素添加样式;

exact(bool):为 true 时, 只有当地址完全匹配 class 和 style 才会应用;

strict(bool):为 true 时,在确定位置是否与当前 URL 匹配时,将考虑位置 pathname 后的斜线; isActive(func):判断链接是否激活的额外逻辑的功能;

从这里我们也可以看出,新版本的路由在组件化上面确实下了不少功夫,来看看NavLink的使用示例:

// activeClassName选中时样式为selectedFAQs// 选中时样式为activeStyle的样式设置FAQs// 当event id为奇数的时候,激活链接const oddEvent = (match, location) => { if (!match) { return false } const eventID = parseInt(match.params.eventID) return !isNaN(eventID) && eventID % 2 === 1}Event 123

登录后复制

该组件用来渲染匹配地址的第一个 或者 。那么它与使用一堆route又有什么区别呢?

的独特之处是独它仅仅渲染一个路由。相反地,每一个包含匹配地址(location)的 都会被渲染。思考下面的代码:


登录后复制

如果现在的URL是 /about ,那么 , , 还有 都会被渲染,因为它们都与路径(path)匹配。这种设计,允许我们以多种方式将多个 组合到我们的应用程序中,例如侧栏(sidebars),面包屑(breadcrumbs),bootstrap tabs等等。 然而,偶尔我们只想选择一个 来渲染。如果我们现在处于 /about ,我们也不希望匹配 /:user (或者显示我们的 “404” 页面 )。以下是使用 Switch 的方法来实现:

    

登录后复制

现在,如果我们处于 /about , 将开始寻找匹配的 。 将被匹配, 将停止寻找匹配并渲染 。同样,如果我们处于 /michael , 将被渲染。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

使用JS操作input文本框内容

Js基础算法有哪些

以上就是React Router v4使用详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2765930.html

(0)
上一篇 2025年3月8日 11:05:46
下一篇 2025年3月8日 11:05:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Angular 5.x中Router使用详解

    这次给大家带来Angular 5.x中Router使用详解,Angular 5.x中Router使用的注意事项有哪些,下面就是实战案例,一起来看一下。 序言: Angular APP 视图之间的跳转,依赖于 Router (路由),这一章,…

    2025年3月8日
    200
  • js确认框confirm()用法实例详解

    这篇文章主要针对js确认框confirm()用法进行实例讲解,介绍了javascript确认框的三种使用方法,感兴趣的小伙伴们可以参考一下 先为大家介绍javascript确认框的三种使用方法,具体内容如下 第一种方法:挺好用的,确认以后才…

    2025年3月8日
    200
  • Vue使用Sortable步骤详解

    这次给大家带来Vue使用Sortable步骤详解,Vue使用Sortable的注意事项有哪些,下面就是实战案例,一起来看一下。 之前开发一个后台管理系统,里面用到了Vue和Element-UI这个组件库,遇到一个挺有意思的问题,和大家分享一…

    编程技术 2025年3月8日
    200
  • 使用react redux中间件步骤详解

    这次给大家带来使用react redux中间件步骤详解,使用react redux中间件的注意事项有哪些,下面就是实战案例,一起来看一下。 用过react的同学都知道在redux的存在,redux就是一种前端用来存储数据的仓库,并对改仓库进…

    2025年3月8日 编程技术
    200
  • mint-ui使用步骤详解

    这次给大家带来mint-ui使用步骤详解,mint-ui使用的注意事项有哪些,下面就是实战案例,一起来看一下。 本文介绍了mint-ui在vue中的使用示例,分享给大家,具体如下: 首先放上 mint-ui中文文档 近来在使用mint-ui…

    2025年3月8日 编程技术
    200
  • React Native怎样实现悬浮按钮

    这次给大家带来React Native怎样实现悬浮按钮,React Native实现悬浮按钮的注意事项有哪些,下面就是实战案例,一起来看一下。 React Native悬浮按钮组件:react-native-action-button,纯J…

    2025年3月8日
    200
  • vue中mint-ui使用步骤详解

    这次给大家带来vue中mint-ui使用步骤详解,vue中mint-ui使用的注意事项有哪些,下面就是实战案例,一起来看一下。 首先放上mint-ui中文文档 近来在使用mint-ui,发现部分插件在讲解上并不是很详细,部分实例找不到使用的…

    2025年3月8日 编程技术
    200
  • vue-cli 3.0使用详解

    这次给大家带来vue-cli 3.0使用详解,vue-cli 3.0使用的注意事项有哪些,下面就是实战案例,一起来看一下。 环境安装 全新版本的脚手架、逼格非常高、 记住这个名字 @vue/cli ,对就是这个 你npm 或者yarn 安装…

    2025年3月8日 编程技术
    400
  • vue cli升级webpack4步骤详解

    这次给大家带来vue cli升级webpack4步骤详解,vue cli升级webpack4的注意事项有哪些,下面就是实战案例,一起来看一下。 webpack4 released 已经有一段时间了,插件系统趋于平稳,适逢对webpack3的…

    编程技术 2025年3月8日
    200
  • vue filter介绍与使用详解

    这次给大家带来vue filter介绍与使用详解,vue filter介绍与使用的注意事项有哪些,下面就是实战案例,一起来看一下。 Vue filter介绍及其使用 VueJs 提供了强大的过滤器API,能够对数据进行各种过滤处理,返回需要…

    2025年3月8日 编程技术
    200

发表回复

登录后才能评论