react-router与react-router-dom使用时的区别
1、React-router与React-router-dom的API对比
React-router:提供了router的核心api。如Router、Route、Switch等,但没有提供有关dom操作进行路由跳转的ap;
React-router-dom:提供了BrowserRouter、Route、Link等api,可以通过dom操作触发事件控制路由。
2、React-router与React-router-dom的功能对比
React-router:实现了路由的核心功能
React-router-dom:基于React-router,加入了一些在浏览器运行下的一些功能,
例如:Link组件会渲染一个a标签,
BrowserRouter使用 HTML5 提供的 history API可以保证你的 UI 界面和 URL 保持同步,
HashRouter使用 URL 的 hash 部分保证你的 UI 界面和 URL 保持同步
3、React-router与React-router-dom的写法对比
React-router不能通过操作dom控制路由,此时还需引入React-router-dom
import {Switch, Route, Router} from 'react-router';
import {HashHistory, Link} from 'react-router-dom';
React-router-dom在React-router的基础上扩展了可操作dom的api
import {Swtich, Route, Router, HashHistory, Link} from 'react-router-dom';
4、React-router与React-router-dom的路由跳转对比
React-router:router4.0以上版本用this.props.history.push('/path')实现跳转;
router3.0以上版本用this.props.router.push('/path')实现跳转
React-router-dom:直接用this.props.history.push('/path')就可以实现跳转
总结:
在使用React的大多数情况下,我们会想要通过操作dom来控制路由,例如点击一个按钮完成跳转,这种时候使用React-router-dom就比较方便。
安装也很简单:npm install react-router-dom --save
从react-router-dom中package.json的依赖就可以看出:react-router-dom是依赖react-router的,所以我们使用npm安装react-router-dom的时候,不需要npm安装react-router。
//react-router-dom的依赖
"dependencies": {
"history": "^4.7.2",
"invariant": "^2.2.2",
"loose-envify": "^1.3.1",
"prop-types": "^15.5.4",
"react-router": "^4.2.0",
"warning": "^3.0.0"
}
-THE END-
react-router与react-router-dom使用时的区别的更多相关文章
- IEnumerable和IQueryable在使用时的区别
最近在调研数据库查询时因使用IEnumerable进行Linq to entity的操作,造成数据库访问缓慢.此文讲述的便是IEnumerable和IQueryable的区别. 微软对IEnumera ...
- 【react router路由】<Router> <Siwtch> <Route>标签
博客 https://www.jianshu.com/p/ed5e56994f13?from=timeline 文档 http://react-guide.github.io/react-router ...
- react 创建项目 sass router redux
创建项目第一步 基本搭建 在创建之前,需要有一个git 仓库,我们要把项目搭建到git 中 目录介绍 cd 到某个盘 mkdir workspace 创建workspace文件夹 cd works ...
- React入门-JSX和虚拟dom
1.JSX理解 举例: const element = <h1>Hello, world!</h1>; 这被称为 JSX,是一个 JavaScript 的语法扩展.建议在 Re ...
- React源码解析-Virtual DOM解析
前言:最近一直在研究React,看了陈屹先生所著的深入React技术栈,以及自己使用了这么长时间.对React应该说有比较深的理解了,正好前阵子也把两本关于前端设计模式的书看完了,总感觉有一种知识错综 ...
- 深刻理解 React (一) ——JSX和虚拟DOM
版权声明:本文由左明原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/155 来源:腾云阁 https://www.qclou ...
- React 16 源码瞎几把解读 【三 点 一】 把react组件对象弄到dom中去(矛头指向fiber,fiber不解读这个过程也不知道)
一.ReactDOM.render 都干啥了 我们在写react的时候,最后一步肯定是 ReactDOM.render( <div> <Home name="home&qu ...
- React会自动把虚拟DOM数组展开
React会自动把虚拟DOM数组展开,放在父级虚拟DOM中,这个特性还是我同事帮我解决一个问题的时候,偶然发现的. 如何将一个数据数组转换为一个虚拟DOM的数组,需要使用map,如下: const n ...
- React之深入了解虚拟DOM
JS在手机中也可运行,React Native通过将虚拟DOM转换为底层的原生组件,即可在手机端运行,在浏览器运行时,只需要将虚拟DOM转换为真实DOM即可运行,虚拟DOM就是将真实DOM转换为JS对 ...
随机推荐
- linux配置防火墙和重启防火墙
1.在linux系统里面找到并打开编辑配置防火墙的文件,执行命令: vi /etc/sysconfig/iptables. 2.在上面打开的文件里面加入一下语句: -A INPUT -m state ...
- vs2017 遇到异常。这可能是由某个扩展导致的。奇妙的解决方式
最近在使用visual studio 2017 创建.netcore 2.2的MVC项目后,在View里面拖拽引用css或js文件时总出现“遇到异常.这可能是由某个扩展导致的.” 然后在网上找了大半天 ...
- 用HTML5 video标签插入视频,在谷歌浏览器上播放视频时,右下角显示的下载按钮怎么去掉
使用H5的video标签可以直接插入视频,一般在浏览器效果如下图显示: 但有时在谷歌浏览器上显示,会遇到右下角有下载按钮.如果项目要求去掉这个下载按钮,怎么办呢?如下图显示: 分析: 经本人测试,是谷 ...
- java8 parallel并行处理实战
需求 我需要做一个人员某几项数据的统计,由于数据量较大,不能一次性加载到内存进行统计.所以采用了遍历每个用户.当然也可以分配处理. 分析需求可得知,每个用户其实互不相关,数据的统计可以同步进行,因此考 ...
- [git] 本地仓库信息的查询
本地仓库信息查询操作 1.1 git status 查看当前暂存区状态 git status 显示当前分支信息: 提交的目的分支信息: git 管理的有修改的文件: 当前仓库未被 git 管理的文 ...
- Linux 进程一直占用单核CPU分析
pidstat 1信息
- numpy中array和asarray的区别
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 举例说明: imp ...
- 使用diskpart命令格式化U盘
在安装各种linux系统时,经常要使用SD卡,这里就出了个问题,就是SD卡被linux格式化之后无法在widdows下使用. 并且windows下的格式化按键对它毫无作用.笔者在摸索的过程中,找到了格 ...
- 678 "流浪地球"为什么是个好地方?(系统越复杂拥有好运气的机会也就越大)
运气,其实就是一个复杂系统孕育出的,超出已知经验的解决方案.它不是没有产生机制.只不过,这个机制太复杂,涉及的因素太多.我们没法复制.所以,我们只能笼统的,把这套机制称为运气,或者命数. 举个例子,假 ...
- tf.nn.in_top_k原理探究
import tensorflow as tf; A = [[0.8,0.6,0.3], [0.1,0.6,0.4],[0.5,0.1,0.9]] B = [0,2,1] out = tf.nn.in ...