日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue路由跳转子组件_vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)...

發布時間:2023/12/10 vue 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue路由跳转子组件_vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模式

vue-router中的模式選項主要在router實例化的時候進行定義的,如下

const router = new VueRouter({

mode: ‘history‘, // 兩種類型history 還有 hash

routes: routes // 可以縮寫成routes

})

有兩種模式可供選擇,history 和 hash,大致對比一下,

模式優點缺點

hash

使用簡單、無需后臺支持

在url中以hash形式存在,不會傳到后臺

history

地址明確,便于理解和后臺處理

需要后臺配合

hash模式對于后臺來講就是一個url,因為地址中的hash值是不會傳到后臺的,所以服務器端做一個根地址的映射就可以了。

history模式最終的路由都體現在url的pathname中,這部分是會傳到服務器端的,因此需要服務端對每一個可能的path值都作相應的映射?;蛘卟捎媚:ヅ涞姆绞竭M行映射。

除此之外,history模式下,如果后端不是一對一的進行映射,而是模糊匹配的話,那么就要注意一下404的情況了。這個時候就需要在前端router中定義404頁面了。

404路由的定義

由于router本身的匹配是從上到下的,如果在前面找到了匹配的路由,就跳轉了。因此可以直接在最后添加404的路由,如下

let routerConfig = [{

path: ‘/pages‘,

component: App,

children: [{

path: ‘demo/step1/list‘,

component: coupon,

name: ‘coupon-list‘,

meta: {

title: ‘紅包‘

}

}]

}, {

path: ‘*‘,

component: NotFound,

name: ‘notfound‘,

meta: {

title: ‘404-頁面丟了‘

}

}]

在前面匹配不到的時候,* 代表全部,就是都指向404頁面

路由鉤子

路由鉤子主要是給使用者在路由發生變化時進行一些特殊的處理而定義的,靠。。好拗口啊。

總體來講vue里面提供了三大類鉤子

1、全局鉤子

2、某個路由獨享的鉤子

3、組件內鉤子

全局鉤子

顧名思義,全局鉤子全局用,使用如下

const router = new VueRouter({

mode: ‘history‘,

base: __dirname,

routes: routerConfig

})

router.beforeEach((to, from, next) => {

document.title = to.meta.title || ‘demo‘

if (!to.query.url && from.query.url) {

to.query.url = from.query.url

}

next()

})

router.afterEach(route => {

})

某個路由獨享鉤子

就像說的一樣,給某個路由單獨使用的,本質上和后面的組件內鉤子是一樣的。都是特指的某個路由。不同的是,這里的一般定義在router當中,而不是在組件內。如下

const router = new VueRouter({

routes: [

{

path: ‘/foo‘,

component: Foo,

beforeEnter: (to, from, next) => {

// ...

},

beforeLeave: (to, from, next) => {

// ...

}

}

]

})

組件內鉤子

首先看一下官方定義:

你可以在路由組件內直接定義以下路由導航鉤子

beforeRouteEnter

beforeRouteUpdate (2.2 新增)

beforeRouteLeave

路由組件!路由組件!路由組件!重要的事情說三遍,大家一定要注意這里說的是“路由組件”,而路由組件!== 組件,路由組件!== 組件,路由組件!== 組件!之前一直沒注意這點,然后在子組件里面傻乎乎的調鉤子函數發現一直沒用。。。

我們先來看一下什么是路由組件?

路由組件:直接定義在router中component處的組件

也就是說router中定義的入口vue文件之外的組件,是沒有鉤子函數的,也就不用說使用了。但是如果你使用了并不會報錯,只是沒反應。(本想畫個圖的,太懶了。。。自己理解理解吧,很好理解的)

這里再回頭看下這個路由內鉤子是怎么用的,很簡單和data、method平級的方法

beforeRouteLeave(to, from, next) {

// ....

next()

},

beforeRouteEnter(to, from, next) {

// ....

next()

},

beforeRouteUpdate(to, from, next) {

// ....

next()

},

computed: {},

method: {}

三種路由鉤子中都涉及到了三個參數,這里直接上官方介紹吧

to: Route: 即將要進入的目標 路由對象

from: Route: 當前導航正要離開的路由

next: Function: 一定要調用該方法來 resolve 這個鉤子。執行效果依賴 next 方法的調用參數。

next(): 進行管道中的下一個鉤子。如果全部鉤子執行完了,則導航的狀態就是 confirmed (確認的)。

next(false): 中斷當前的導航。如果瀏覽器的 URL 改變了(可能是用戶手動或者瀏覽器后退按鈕),那么 URL 地址會重置到 from 路由對應的地址。

next(‘/’) 或者 next({ path: ‘/’ }): 跳轉到一個不同的地址。當前的導航被中斷,然后進行一個新的導航。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的vue路由跳转子组件_vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。