dav url prams與元件掛載的集幾種解決方案

程式碼星空發表於2018-04-29

最近二個禮拜接觸了dva,使用dva快速地實現了一個管理平臺,用到的技術是基於dva+antd+webpack。不得不說,dva對於react,redux系列的封裝真的挺妙的,使用起來非常方便。而結合antd使得組織介面非常的快,antd的各種元件還得基本所有的控制元件都不用自己再花心思造輪子。但是遇到了一個比較棘手的問題,是同一個選單不同標籤的情況,因為同一個選單的url pathman是一樣的,不同的是url search是不同的,但是react-reouter是對應的router元件是識別到url pathman的。

全域性key

如果要讓router對應到search,基於不同的search,就可以重新掛載元件,但是這個是全域性的key,侵入性太強。但是可以實現我們希望的不同url search 重新掛載元件。但是放入系統中,基於系統的設計,左側選單欄下面有2個tab,tab 2是我們的儲存標籤頁面,點選了標籤頁面,是可以重新掛載,但是因為重新掛載了全域性的touter,所以導致sidermenu重新掛載,選單就跳回到選單tab,這並不是我們想要的結果。而且本身這種key的設定基於全域性,侵入性特別的強,效能上也是下下之選。

元件加key

普通的component加可key,既可以標識該元件的唯一性,在diff的時候,會根據其key是否一致來決定是否重新掛載,key只要在其同級層級是唯一性就可以,不要求全域性唯一性(基於diff演算法是同級對比策略)。

結合的redux的元件的key設定

結合了redux的元件,redux管理資料通過connnct掛載到react component上。

相關文章