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-dompackage.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"
  }

原文地址:https://www.cnblogs.com/tianyamoon/p/12257605.html

时间: 2024-10-01 00:29:10

react-router与react-router-dom使用时的区别的相关文章

const char*, char const*, char*const使用时的区别

案例1: #include<iostream> using namespace std; void main(void) { // char* a 与 char a[] 的区别 char* a = "abcdef"; // a为一指针,其值可以改变.现在a指向的是一常量字符串 cout << a << endl; a = "ghijkl"; // a现在指向另一常量字符串 //a[0] = 'z'; // a指向的为常量,编译没问

JS中,for和while在使用时的区别。

for用于可预测循环次数的情况,而while可在不确定循环次数时使用, while甚至可以不在循环指令上指定跳出循环的条件. so,正常使用的时候,应该优先考虑for循环,一般情况下for循环的效率都是最高的.

React入门-JSX和虚拟dom

1.JSX理解 举例: const element = <h1>Hello, world!</h1>; 这被称为 JSX,是一个 JavaScript 的语法扩展.建议在 React 中配合使用 JSX,JSX 可以生成 React “元素”,而且JSX 可以很好地描述 UI 应该呈现出它应有交互的本质形式.JSX 可能会使人联想到模版语言,但它具有 JavaScript 的全部功能. 为什么用JSX? React 认为渲染逻辑本质上与其他 UI 逻辑内在耦合,比如,在 UI 中需

React会自动把虚拟DOM数组展开

React会自动把虚拟DOM数组展开,放在父级虚拟DOM中,这个特性还是我同事帮我解决一个问题的时候,偶然发现的. 如何将一个数据数组转换为一个虚拟DOM的数组,需要使用map,如下: const names = ['jquery', 'zepto', 'vue', 'angular', 'react', 'hooks']; const ul = ( <ul> { names.map((item, key) => <li key={key}>{item}</li>

react特点和创建虚拟DOM

react:用于构建用户界面的JavaScript库 特点: 1.声明式(只需要更新数据,不需要操作DOM,页面就会变化) 2.组件化(页面简化,方便维护) 3.一次学习,随处编写(ReactNative,可以运用在手机上,包括安卓和ios,既可以写浏览器端也可以写服务器端) 4.高效(虚拟dom:不总是直接操作DOM 和 dom diff:最小化页面重绘) 5.单项数据流 注意:react高效的原因:  相关js库: react.js:React的核心库 react-dom.js:提供操作DO

为什么要学习React,学习React在大数据开发上有什么好处

为什么要学习React,学习React在大数据开发上有什么好处 分享之前我还是要推荐下我自己创建的大数据学习资料分享群716581014,这是全国最大的大数据学习交流的地方,2000人聚集,不管你是小白还是大牛,小编我都挺欢迎,今天的源码已经上传到群文件,不定期分享干货,包括我自己整理的一份最新的适合2018年学习和零基础入门教程,欢迎初学和进阶中的小伙伴. 如何学习React 如果你是一个 React (或者前端) 新手, 出于以下的原因, 你可能会对这个生态圈感到困惑: React 的目标群

react新特性 react hooks

本文介绍的是react新特性react hooks,本文面向的是有一定react开发经验的小伙伴,如果你对react还不是很熟悉的话我建议你先学习react并多多联系. 首先我们都知道react有3种组件:分别是Function函数式无状态组件.class有状态组件.高阶组件.这里不对这3种组件做一一介绍. 本文重点是react hooks 一个最简单的Hooks 首先让我们看一下一个简单的有状态组件: 1 class Example extends React.Component { 2 co

【玩转React】关于React你需要知道的事儿

前言 随着前端技术的迅猛发展,各种前端框架也随势崛起,但归根结底,支撑每一款web框架流行的强大因素都是它能更好地服务于业务. React 自然也不例外,它的开发者当初正在开发Facebook的一个广告系统,由于不满足于当下任何的 MVC 框架,所以就自己写了一套 UI 框架,于是乎大名鼎鼎的 React 就由此诞生了. React 的出现无疑为 web 开发带来了颠覆性的改变,多少开发者夜以继日只为体验一把 React 带来的快感.本文就将带领大家一起领略一番 React 的理念.特色与情怀.

React Native之React速学教程(上)

概述 本篇为<React Native之React速学教程>的第一篇.本篇将从React的特点.如何使用React.JSX语法.组件(Component)以及组件的属性,状态等方面进行讲解. What's React React是一个用于组建用户界面的JavaScript库,让你以更简单的方式来创建交互式用户界面. 当数据改变时,React将高效的更新和渲染需要更新的组件.声明性视图使你的代码更可预测,更容易调试. 构建封装管理自己的状态的组件,然后将它们组装成复杂的用户界面.由于组件逻辑是用