Vue專案中路由動態傳參功能相關實現

2021-09-27 12:01:28 字數 1500 閱讀 5619

這兩天在專案中有個新需求:在當前頁面中的有很多資料,過濾資料的條件有時間,頁碼,型別,id搜尋....,假設我在頁面中選擇的某段時間,某個型別,現在我需要把握當前看到的資訊完全展現給另一朋友。 server端環境:時間和頁碼可以動態的傳遞到後端

剛看此需求首先想到的是vue—router的動態傳參,於是就開始碼**。將過濾條件相關的變數動態的傳說路由中
this.$router.push(})
首次進入頁面時,取出路由中的query引數

this.$route.query
整體思路就是這樣,測試發現個嚴重的問題, 1.頁面重新整理的問題,在瀏覽中手動更改query時頁面不會重新整理(vue路由問題,下面會說到) 查閱官方文件發現文件中有此段話:記住引數或查詢的改變並不會觸發進入/離開的導航守衛。你可以通過觀察 $route 物件來應對這些變化,或使用 beforerouteupdate 的元件內守衛。 2.專案是單頁面,元件之間傳值(同級元件)是非常大問題,我需要在每個頁面中寫一遍**(不能忍)

問題1按照官方給出的方式解決:

watch:

}

路由重新整理問題搞定

問題2 暫時寫個公共方法來解決

在次測試時發現,只要我路由引數變化都會重新重新整理整個頁面(我只想重新請求資料),思考解決方法.....

過程:為了達到我想要的效果,把路由變化的過程梳理一下。

需要全域性的變數來儲存query中的值(vuex)

需要乙個開關來控制是否重新整理頁面(vuex)

初始化頁面時將路由中的query下發到頁面相對應的變數

頁面引數變化是動態的改變路由 理清楚路由變化之後開始實現 *儲存路由query和控制是否重新整理頁面的值都用vuex來實現

new vuex.store(

},mutations:

},test2(state)

} })

初始化頁面時將路由中的query下發到頁面用公共方法**

//obj傳入當前頁面的data即(this.$data確保query中引數key都是data的屬性值)

//queryparams傳入當前頁面路由的query值

vue.prototype.$initdata=function(obj,queryparams)

頁面引數變化是動態的改變路由寫個公共方法給路由賦值就行了

這個功能的實現是我對vue有了更加深入的了解,vue能從眾多的前端框架中脫穎而出跟他與時俱進的開發理念,以及前端專案中的各種相關生態的良好支援有著很大的關係。之前剛接觸vue時,就被他前端專案的一鍵部署以及通俗易懂的開發文件深深的吸引。越是深入了解他的本質,就越發的覺得vue設計思想的wonderful.......

更多專業前端知識,請上

【猿2048】www.mk2048.com

Vue中路由傳參

按大類有兩種傳遞方式,分別是params和query。其中params又分為兩種,即在url中顯示引數和不顯示引數。1 params傳參,顯示引數 這種情況屬於動態路由,需要提前在路由中配置好,如 path user id component user 如id為12345,這時導航欄中的url會顯示...

vue中路由巢狀 路由傳參

在vue中使用vue router方便我們進行頁面之間的跳轉,元件 components 對映到路由 routes 然後告訴 vue router 在 渲染它們。每個路由應該對映乙個元件。go to foo go to bar 實現路由跳轉的兩種方法,一種為path,另一種為name path he...

Vue專案中路由的基本使用

1.安裝vue router庫 將vue router庫安裝到專案中,執行命令 npm install vue router s2.配置路由對映 在src router目錄下,建立乙個index.js路由對映檔案,內容如下 import vue from vue import vuerouter f...