摘要:概述相對于幾乎是重寫了新版的更偏向于組件化。汲取了很多思想,路由即是組件,使路由更具聲明式,且方便組合。如果你習慣使用,那么一定會很快上手新版的。被一分為三。不止是否有意義參考資料遷移到關注點官方文檔
概述
react-router V4 相對于react-router V2 or V3 幾乎是重寫了, 新版的react-router更偏向于組件化(everything is component)。
V4汲取了很多思想,路由即是組件,使路由更具聲明式,且方便組合。如果你習慣使用react,那么一定會很快上手新版的react-router。
react-router V4 被一分為三: react-router-dom(for web)、react-router-native(for native)、react-router(core)。但如果僅在瀏覽器中使用的話,一般只需要用到react-router-dom就可以了。
改動點 1. Router/Route 的改變// V2 or V3 import { Router, Route, hashHistory } from "react-router";
// V4 Router組件里只能渲染一個組件 import { HashRouter as Router, Route } from "react-router-dom";2. 組件嵌套
// V2 or V3 路由組件嵌套 import { Router, Route, hashHistory } from "react-router";
// V4 Router 的路由組件嵌套 import { HashRouter as Router, Route, Switch } from "react-router-dom";3. 路由的生命周期( )}/>
在react-router V4中去掉了on****的路由生命周期的鉤子,但是你可以在組件中用componentDidMount 或 componentWillMount 代替 onEnter,可以用componentWillUpdate 或 componentWillReceiveProps代替 onUpdate,你可以用componentWillUnmount 代替 onLeave。
4. Link// V2 or V3 import { Link } from "react-router"; // V4 import { Link } from "react-router-dom";5. history.push and history.replace
// V2 or V3 history.push({ pathname: "/home", query: { foo: "test", bar: "temp" } }); history.replace({ pathname: "/home", query: { foo: "test", bar: "temp" } }); // V4 history.push({ pathname: "/home", search: "?foo=test&bar=temp", }); history.replace({ pathname: "/home", search: "?foo=test&bar=temp", });6. props.params
// V2 or V3 獲取params可以這么獲取 this.props.params // V4 this.props.match.params7. location.query
// V2 or V3 獲取query可以這么獲取 this.props.location.query // V4 去掉了location.query,只能使用search來獲取,為了讓其跟瀏覽器一樣 // 如果想要兼容以前的location.query,可以使用query-string庫解析一下 // 如: queryString.parse(props.location.search) this.props.location.search8. location.action
// V2 or V3 獲取location的action this.props.location.action // V4 去掉了location.action, 放在了history里面 history.action9.關于history
以前獲取react-router里面的history庫,可以這么獲取:
import {hashHistory as history} from "react-router";
react-router V4:
import createHashHistory as history from "history/createHashHistory";兼容處理
因為要從react-router V2完全遷移到react-router V4工作量還是挺大的,一下子難以完全遷移,所以對某些地方做了兼容處理。
historyimport _ from "lodash"; import queryString from "query-string"; function processHistory(history) { const _push = history.push; const _replace = history.replace; history.push = function (one) { if (!_.isPlainObject(one)) { return _push.apply(this, arguments); } const o = Object.assign({}, one); if (o.query) { o.search = queryString.stringify(o.query); } _push.apply(this, [o]); }; history.replace = function (one) { if (!_.isPlainObject(one)) { return _replace.apply(this, arguments); } const o = Object.assign({}, one); if (o.query) { o.search = queryString.stringify(o.query); } _replace.apply(this, [o]); }; return history; } export default processHistory;props
import queryString from "query-string"; const processReactRouterProps = (props) => { const newProps = Object.assign({}, props); newProps.location.query = queryString.parse(props.location.search); newProps.location.action = newProps.history.action; newProps.params = props.match.params || {}; // 不止 || 是否有意義 return newProps; } export default processReactRouterProps;
參考資料:
react-router2 遷移到 react-router4 關注點
react-router 官方文檔
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83584.html
摘要:這是關于自己對版本學習理解做的這里獻上官方文檔參考死循環之自己引用自己組件解釋創建創建路由顯示什么組件顯示在什么位置它有三個用來定義渲染內容將迭代所有子元素僅渲染與當前位置匹配的第一個子元素當沒有路徑與當前位置匹配的時候就選擇沒有設置的組 這是關于自己對 REACT-router v4+ 版本學習理解做的dome ## 這里獻上git ## 官方文檔 ## 參考 ## react 死循...
摘要:木易楊注意原始類型被包裝為對象木易楊原始類型會被包裝,和會被忽略。木易楊原因在于時,其屬性描述符為不可寫,即。木易楊解決方法也很簡單,使用我們在進階期中介紹的就可以了,使用如下。 引言 上篇文章介紹了賦值、淺拷貝和深拷貝,其中介紹了很多賦值和淺拷貝的相關知識以及兩者區別,限于篇幅只介紹了一種常用深拷貝方案。 本篇文章會先介紹淺拷貝 Object.assign 的實現原理,然后帶你手動實...
摘要:詳見對綁定監聽事件,把的改變同步到的中用來把的更新同步到中。代碼分割版本通過和實現代碼分割和動態路由。筆者認為,更符合的組件思想,于是做了一個實踐。 原文:https://github.com/YutHelloWo... 前言 今年3月初發布了react-router v4,相較之前的v3和v2版本做了一個破壞性的升級。遵循一切皆React Component的理念。靜態路由變成了動態...
摘要:官網美國獨立服務器配置信息默認接入帶寬,自帶個和,流量帶寬硬盤都可以定制。月,月,月,,月,月,月,月,月,額月,月,月,月,月。iWebFusion怎么樣,iWebFusion好不好,iWebFusion可謂歷史悠久,2001年成立,美國超級老牌服務器商家!iWebFusion今年對自家獨立服務器進行了改版升級,所有服務器接入1Gbps帶寬,可以升級到10Gbps,給的配置超級高,但是價格...
摘要:目前,商家針對部分服務器提供優惠碼,優惠后達拉斯機房服務器最低每月美元起,圣何塞機房服務器最低每月美元起,均為端口帶寬。? spinservers是Majestic Hosting Solutions LLC旗下站點,主要提供國外服務器租用和Hybrid Dedicated等產品的商家,數據中心包括美國達拉斯和圣何塞機房,機器一般10Gbps端口帶寬,高配置硬件,支持使用PayPal、...
閱讀 2016·2021-11-12 10:36
閱讀 1865·2021-11-09 09:49
閱讀 2591·2021-11-04 16:12
閱讀 1144·2021-10-09 09:57
閱讀 3235·2019-08-29 17:24
閱讀 1909·2019-08-29 15:12
閱讀 1272·2019-08-29 14:07
閱讀 1285·2019-08-29 12:53