四、Vue Router 設置動態路由


動態路由配置

/user/foo/user/bar都映射到相同的路由。也就是說根據不同的ID,渲染相同的User組件。可以使用動態路徑參數來達到這個效果。

動態路徑參數使用冒號:標記,后面為參數的名稱,參數會被設置到this.$route.params中。

<script>
	// 匹配模式 
  	/user/:username
    // 匹配到的路徑為
    /user/evan
    // $route.params 獲取到的參數對象
    { useranme: 'evan' }    
</script>

注意::冒號的配置可以理解為正則匹配,因此你可以在最后設置一個?的惰性匹配,表示可以出現 0 次或 1次。

相應路由參數的變化

當使用路由參數時,如從/user/foo導航到/user/bar時,原來的組件實例會被復用。因為兩個路由都渲染同一個組件,比起銷毀再創建,復用則顯得更加高效。這也意味着組件的生命周期鈎子函數不會再被調用

復用組件時,相對路由參數的變化作出相應的話,可以使用watch(監聽)$route對象的變化。也可以使用beforeRouteUpdate路由更新的導航守衛。

<script>
    const User = {
        template: '...',
        // 1. 通過監聽路由對象變化的形式
        watch: {
            '$route' (to, from) {
                // 對路由變化作出響應
            }
        },
        // 2. 通過更新路由的鈎子函數
        beforeRouteUpdate (to, from, next) {
            // 路由變化會觸發...
        }
    }
</script>  

捕獲所有路由或404 Not found 路由

匹配任意路徑,可以使用通配符(*);注意:使用通配符路由時,必須放在配置的最后。通常用於客戶端404錯誤。

<script>
	{ path: '*' } // 會匹配所有路徑
    { path: '/user-*' } // 會匹配以 /user- 開頭的任意路徑
</script>

使用通配符時,$route.params內會自動添加一個名為pathMatch參數。注意:pathMatch獲取的是*部分的內容

<script>
	// { path: '/user-*' }
    this.$router.push('/user-admin');
    this.$router.params  // 獲取到的是 { pathMatch: 'admin' }
</script>

高級路由配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM