編程式的導航 router.pushhtml
this.$router.push("home"); this.$router.push({ name: 'news', params: { userId: 123 }}) // 傳遞 this.$route.params.userId // 獲取 this.$router.push({path: '/transport/dispatch', query: {paicheNo: obj.paicheNo}}) // 傳遞 this.$route.query.paicheNo // 獲取
聲明式的導航
<router-link tag="li" // 渲染爲 li標籤 默認是 a標籤 :to="{name:'city',query:{id:item.id},params:{cityName:item.name}}"> {{item.name}} </router-link>
查詢參數搭配query,刷新頁面數據不會丟失**vue
一個組件中準備了三個出口react
<router-view class="view one"></router-view> <router-view class="view two" name="a"></router-view> <router-view class="view three" name="b"></router-view>
對於同一個路由 一個視圖出口須要一個組件渲染 三個出口就須要三個 下邊是具體的配置 注意 components (此時是要加s的)nginx
const router = new VueRouter({ routes: [ { path: '/', components: { default: Foo, a: Bar, b: Baz } } ] })
重定向也是經過routes 配置來完成的 下邊的例子是從 /a 重定向到 /bapache
const router = new VueRouter({ routes: [ {path: '/a', redirect: '/b'} ] })
重定向的目標也能夠是一個命名的路由編程
const router = new VueRouter({ routes: [ {path: '/a', redirect: {name: 'foo'}} ] })
甚至是一個 function 動態的return從定向的目標後端
const router = new VueRouter({ routes: [ {path: '/a', redirect: to => { // 方法接收目標路由做爲參數 // return 重定向餓 字符串路徑或路徑對象均可以 }} ] })
const router = new VueRouter({ routes: [ {path: '/a', component: Foo, alias: '/b'} ] })
用建立好的實例調用 beforeRouterEnter 守衛中傳遞給 next 的回調函數服務器
全局前置守衛app
const router = new VueRouter({....}) router.beforEach((to, from, next) => { // to 即將進入的目標路由對象 // from 當前導航正要離開的 路由對象 // next 是一個 function 必需要調用一下 next() })
全局解析守衛
router.beforeResolve((to, from) => { // })
全局後置守衛
router.afterEach((to, from) => { // 此時沒有了 next 函數 })
路由獨享的守衛
const router = new VueRouter({ routes: [ { path: 'foo', component: Foo, beforeEnter: (to, from, next) => { } } ] })
組件內的守衛 (定義的位置和組件的生命週期平級)
const Foo = { template: `...`, beforeRouterEnter (to, from, next) { // 在組件的對應路由被 confirm 前調用 // 不能獲取 組件的 this 由於當此守衛執行時 組件實例尚未建立 下方法能夠訪問組件實例 next(vm => { // 經過 vm 訪問組件的實例 }) }, beforeRouterUpdate (to, from, next) { // 當前路由改變 可是該組件被複用時 調用 // 舉例來講,對於一個帶有動態參數的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉的時候, // 因爲會渲染一樣的 Foo 組件,所以組件實例會被複用。而這個鉤子就會在這個狀況下被調用。 // 能夠訪問組件的 this }, beforeRouteLeave (to, from, next) { // 導航離開該組件的對應路由時調用 // 能夠訪問組件實例 `this` } }