一、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-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-