在文章使用vue-router完成簡單導航功能 中實現的路由導航功能是不能傳遞參數的,也就是說是靜態路由。而能傳遞參數的路由模式,由於可以傳遞參數,所以其對應的路由數量是不確定的,故稱之為 動態路由。
那麼如何將參數當作路由呢?
##如下範例:在參數名稱前面加上
:
,然後將參數寫在路由的path
內
routes: [ //将页面组件与path指令的路由关联 { name: 'BookInfo', path: '/books/:id', component: BookInfo } ]這樣定義之後,
vue-router就會符合所有的:
/books/1,/books/2,/books/3 …,所以說這樣定義的路由的數量是不確定的。
我們加入一個
params 屬性來指定特定的參數值
<pre class='brush:php;toolbar:false;'> <li>
<router-link :to ="{name:&#39;BookInfo&#39;,params :{id:1}}" >
<p>首页</p>
</router-link>
</li></pre>
如果需要傳入多個參數值,只要按照上面的命名方法來加入參數,傳遞在params中對應的宣告參數值即可,vue-router只要符合到路由模式的定義就會自動對參數進行分解取值如
path: '/books/version/:id',則對應
params為:
params :{id:1,version:1}
那麼現在就面臨這一個問題- 如何從路由中將這個參數值讀取出來呢?
答案:透過
$route.params這個屬性取得指定的參數值,如:
this.$route.params.id,
this.$route.params .msg
<p>当前图书编号是:{{$route.params.id}}</p>如果想在
js程式碼中根據參數值做對應的處理,則在預設路由中加入如下程式碼:
export default { name: "app", created() { alert(this.$route.params.id); }};
當使用路由參數的時候,如從/books/1
到
/books/2,原來的元件實例會被重複使用,因為兩個路由都渲染同一個元件,比起銷毀後再創建,重複使用的銷率會更高。
這也就是說元件的
生命週期鉤子不會再被呼叫(元件沒有被銷毀後再創建) ,也就是created mounted等鉤子函數在頁面第二次載入的時候回失效。
那麼,當複用元件時候,想對路由參數的變化做出回應的話,就需要在$watch 物件內加入對
$ route 物件變化的追蹤函數
<script> export default { name: "app", watch :{ '$route' (to,from){ alert(to.params.id); } } }; </script>
如下程式碼($route.params
定義的參數必然是整個路由的其中一部分,
vue -router也可以讓我們使用
"/path?param = value"的方式傳遞參數,可以使用
$route.query.參數名稱來取得參數值
vue-router也提供一個常數參數定義
meta,我們可以在路由定義中先定義
meta的值,然後在路由實例中透過
$route.meta參數取得具體常數值。
$route.query.參數名稱)
{ name: 'BookInfo', path: '/books/:id/?bookName=Lost', component: BookInfo }取得其中
bookName 的值的程式碼為
this.$route.query.msg
$route.meta.參數名稱)
{ name: 'BookInfo', path: '/books/:id', component: BookInfo ,meta: { bookName : 'Lost In River' }}取得其中
bookName的值的程式碼為
this.$route.meta.bookName
動態路由
那麼如何將參數當作路由呢?在參數名稱前面加上:
##如下範例:,然後將參數寫在路由的
path內
routes: [ //将页面组件与path指令的路由关联 { name: 'BookInfo', path: '/books/:id', component: BookInfo } ]
這樣定義之後,
vue-router就會符合所有的:/books/1,/books/2,/books/3 …
,所以說這樣定義的路由的數量是不確定的。 在
我們加入一個params
屬性來指定特定的參數值<pre class='brush:php;toolbar:false;'> <li>
<router-link :to ="{name:&#39;BookInfo&#39;,params :{id:1}}" >
<p>首页</p>
</router-link>
</li></pre>
上面的連結對應就為: http://localhost:8080/__dirname/books/1
如那麼現在就面臨這一個問題- 如何從路由中將這個參數值讀取出來呢?path: '/books/version/:id'
,則對應params
為:params :{id:1,version:1}
答案:透過
$route.params
這個屬性取得指定的參數值,如:this.$route.params.id
,this.$route.params .msg
如果希望在對應的元件頁面內輸出參數值,對應程式碼如下:
<p>当前图书编号是:{{$route.params.id}}</p>
如果想在js
代码中根据参数值做相应的处理,则在默认路由中加入如下代码:
export default { name: "app", created() { alert(this.$route.params.id); }};
当使用路由参数的时候,如 从
/books/1
到/books/2
,原来的组件实例会被复用,因为两个路由都渲染同一个组件,比起销毁后再创建,复用的销率会更高。
这也就是说 组件的生命周期钩子不会再被调用(组件没有被销毁后再创建) ,即created mounted
等钩子函数在页面第二次加载的时候回失效。
那么,当复用组件时候,想对路由参数的变化做出响应的话,就需要在 $watch
对象内添加对 $route
对象变化的跟踪函数
<script> export default { name: "app", watch :{ '$route' (to,from){ alert(to.params.id); } } }; </script>
$route.params
定义的参数必然是整个路由的其中一部分,vue-router
还可以让我们使用"/path?param = value"
的方式传递参数,可以使用$route.query.参数名
获取参数值vue-router
还提供一种常量参数定义meta
,我们可以在路由定义中先定义meta
的值,然后在路由实例中通过$route.meta
参数获取具体常量值。
如下代码($route.query.参数名
)
{ name: 'BookInfo', path: '/books/:id/?bookName=Lost', component: BookInfo }
获取其中 bookName
的值的代码为 this.$route.query.msg
如下代码($route.meta.参数名
)
{ name: 'BookInfo', path: '/books/:id', component: BookInfo ,meta: { bookName : 'Lost In River' }}
获取其中 bookName
的值的代码为 this.$route.meta.bookName
相关推荐:
以上是Vue.js中的動態路由實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。