react-router與react-router-dom使用時的區別

一、React-router與React-router-dom的API對比react

React-router:提供了router的核心api。如Router、Route、Switch等,但沒有提供有關dom操做進行路由跳轉的ap;npm

React-router-dom:提供了BrowserRouter、Route、Link等api,能夠經過dom操做觸發事件控制路由。json

 

 二、React-router與React-router-dom的功能對比api

React-router:實現了路由的核心功能瀏覽器

React-router-dom:基於React-router,加入了一些在瀏覽器運行下的一些功能,react-router

  例如:Link組件會渲染一個a標籤,dom

       BrowserRouter使用 HTML5 提供的 history API能夠保證你的 UI 界面和 URL 保持同步,this

       HashRouter使用 URL 的 hash 部分保證你的 UI 界面和 URL 保持同步spa

 

 三、React-router與React-router-dom的寫法對比code

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';

 

 四、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" }

 

 

-THE END-

相關文章
相關標籤/搜索