日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解Vue 路由組件傳參的 8 種方式

瀏覽:5日期:2022-10-02 15:12:34

我們?cè)陂_(kāi)發(fā)單頁(yè)面應(yīng)用時(shí),有時(shí)需要進(jìn)入某個(gè)路由后基于參數(shù)從服務(wù)器獲取數(shù)據(jù),那么我們首先要獲取路由傳遞過(guò)來(lái)的參數(shù),從而完成服務(wù)器請(qǐng)求,所以,我們需要了解路由傳參的幾種方式,以下方式同 vue-router@4 。

編程式路由傳參

除了使用 <router-link> 創(chuàng)建 a 標(biāo)簽來(lái)定義導(dǎo)航鏈接,我們還可以借助 router 的實(shí)例方法,通過(guò)編寫代碼來(lái)實(shí)現(xiàn)。

1. 通過(guò) params 傳遞

路由配置

路徑參數(shù) 用冒號(hào) : 表示。

const routes = [ // 動(dòng)態(tài)段以冒號(hào)開(kāi)始 { path: ’details/:id’, name: 'details', component: Details },]

router.push() 方法的參數(shù)可以是一個(gè)字符串路徑,或者一個(gè)描述地址的對(duì)象。

const Home = { template: ’<div @click='toDetails'>To Details</div>’, metheds: { toDetails() { // 字符串路徑 this.$router.push(’/details/001’) // 帶有路徑的對(duì)象 this.$router.push({path: ’/details/001’}) // 命名路由,路由配置時(shí),需要 name 字段 this.$router.push({ name: ’details’, params: { id: ’001’ } }) } }}

注意,如果提供了 path , params 會(huì)被忽略:

// `params` 不能與 `path` 一起使用router.push({ path: ’/details’, params: { id: ’001’ } }) // -> /details

組件獲取數(shù)據(jù)

當(dāng)一個(gè)路由被匹配時(shí),它的 params 的值將在每個(gè)組件中以 this.$route.params 的形式暴露出來(lái)。

const Details = { template: ’<div>Details {{ $route.params.id }} </div>’, created() { // 監(jiān)聽(tīng)路由變化 this.$watch( () => this.$route.params, (toParams, previousParams) => { // 對(duì)路由變化做出響應(yīng)... } ) },}2. 通過(guò) query 傳遞

這種情況下 query (查詢參數(shù))傳遞的參數(shù)會(huì)顯示在 url 后面,如: /details/001?kind=car 。

路由配置

使用 query 時(shí),以下三種方式都是可行的:

this.$router.push(’/details/001?kind=car’)this.$router.push({ path: ’/details/001’, query: { kind: 'car' }})this.$router.push({ name: ’details’, params: { id: ’001’ }, query: { kind: ’car’ }})組件獲取數(shù)據(jù)

組件通過(guò) $route.query 獲?。?/p>

const Details = { template: ’<div>Details {{ $route.query.kind }} </div>’, created() { // 監(jiān)聽(tīng)路由變化 this.$watch( () => this.$route.query, (toParams, previousParams) => { // 對(duì)路由變化做出響應(yīng)... } ) },}

要對(duì)同一個(gè)組件中參數(shù)的變化做出響應(yīng)的話,你可以簡(jiǎn)單地 watch $route 對(duì)象上的任意屬性,在這個(gè)場(chǎng)景中,就是 $route.query 。

3. 通過(guò) hash 傳遞

通過(guò)此方式,url 路徑中帶有 hash ,例如: /details/001#car 。

路由配置

使用 hash 時(shí),以下三種方式都是可行的(同 query ):

this.$router.push(’/details/001#car’)this.$router.push({ path: ’/details/001’, hash: ’#car’})this.$router.push({ name: ’details’, params: { id: ’001’ }, hash: ’car’})組件獲取數(shù)據(jù)

組件通過(guò) $route.hash.slice(1) 獲?。?/p>

const Details = { template: ’<div>Details {{ $route.hash.slice(1) }} </div>’,}通過(guò) props 進(jìn)行傳遞

在組件中使用 $route 會(huì)與路由緊密耦合,這限制了組件的靈活性,因?yàn)樗荒苡糜谔囟ǖ?URL。雖然這不一定是件壞事,但我們可以通過(guò) props 配置來(lái)解除這種行為。

以解耦的方式使用 props 進(jìn)行參數(shù)傳遞,主要是在路由配置中進(jìn)行操作。

1. 布爾模式

當(dāng) props 設(shè)置為 true 時(shí), route.params 將被設(shè)置為組件的 props。

例如下面的代碼是通過(guò) $route 的方式獲取動(dòng)態(tài)字段 id :

const User = { template: ’<div>User {{ $route.params.id }}</div>’}const routes = [{ path: ’/user/:id’, component: User }]

將上面的代碼替換成 props 的形式,如下:

const User = { props: [’id’], // 組件中通過(guò) props 獲取 id template: ’<div>User {{ id }}</div>’}// 路由配置中,增加 props 字段,并將值 設(shè)置為 trueconst routes = [{ path: ’/user/:id’, component: User, props: true }]

注意:對(duì)于有命名視圖的路由,你必須為每個(gè)命名視圖定義 props 配置:

const routes = [ { path: ’/user/:id’, components: { default: User, sidebar: Sidebar }, // 為 User 提供 props props: { default: true, sidebar: false } }]

2. 對(duì)象模式

當(dāng) props 是一個(gè)對(duì)象時(shí),它將原樣設(shè)置為組件 props。當(dāng) props 是靜態(tài)的時(shí)候很有用。

路由配置

const routes = [ { path: ’/hello’, component: Hello, props: { name: ’World’ } }]

組件中獲取數(shù)據(jù)

const Hello = { props: { name: { type: String, default: ’Vue’ } }, template: ’<div> Hello {{ name }}</div>’}

<Hello /> 組件默認(rèn)顯示 Hello Vue,但路由配置了 props 對(duì)象,當(dāng)路由跳轉(zhuǎn)到 /hello 時(shí),會(huì)顯示傳遞過(guò)來(lái)的 name , 頁(yè)面會(huì)顯示為 Hello World。

3. 函數(shù)模式

可以創(chuàng)建一個(gè)返回 props 的函數(shù)。這允許你將參數(shù)轉(zhuǎn)換為其他類型,將靜態(tài)值與基于路由的值相結(jié)合等等。

路由配置

使用函數(shù)模式時(shí),返回 props 的函數(shù)接受的參數(shù)為路由記錄 route 。

// 創(chuàng)建一個(gè)返回 props 的函數(shù)const dynamicPropsFn = (route) => { return { name: route.query.say + '!' }}const routes = [ { path: ’/hello’, component: Hello, props: dynamicPropsFn }]組件獲取數(shù)據(jù)

當(dāng) URL 為 /hello?say=World 時(shí), 將傳遞 {name: ’World!’} 作為 props 傳給 Hello 組件。

const Hello = { props: { name: { type: String, default: ’Vue’ } }, template: ’<div> Hello {{ name }}</div>’}

此時(shí)頁(yè)面將渲染:

詳解Vue 路由組件傳參的 8 種方式

注意:請(qǐng)盡可能保持 props 函數(shù)為無(wú)狀態(tài)的,因?yàn)樗粫?huì)在路由發(fā)生變化時(shí)起作用。如果你需要狀態(tài)來(lái)定義 props,請(qǐng)使用包裝組件,這樣 vue 才可以對(duì)狀態(tài)變化做出反應(yīng)。

其他方式

1. 通過(guò) Vuex 進(jìn)行傳遞

1. store 存儲(chǔ)狀態(tài); 2. A 組件更改 store 中的狀態(tài); 3. B 組件從 store 中獲取。

2. 通過(guò)前端本地存儲(chǔ)等方式

1. Local Storage; 2. Session Storage; 3. IndexedDB; 4. Web SQL; 5. Cookies。

到此這篇關(guān)于Vue 路由組件傳參的 8 種方式的文章就介紹到這了,更多相關(guān)Vue 路由組件傳參內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Vue
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
婷婷综合福利| 国产精品成人国产| 蜜臀久久精品| 国产精品99视频| 丰满少妇一区| 91中文字幕精品永久在线| 久久影视三级福利片| 国产精品亲子伦av一区二区三区| 国产剧情一区| 日韩精品免费视频一区二区三区 | 久久青青视频| 另类中文字幕国产精品| 欧美天堂视频| 欧美高清不卡| 亚洲欧美久久久| 亚洲精品综合| 久久国产免费看| 精品国产亚洲一区二区三区大结局| 奇米色欧美一区二区三区| 日韩精品影视| 免费成人在线观看| 国产精品亚洲欧美一级在线| 精品一区二区三区在线观看视频| 国产一区福利| 国产成人精品一区二区三区视频| 国产精品一线| 午夜精品福利影院| 国产精品一区二区美女视频免费看| 欧美一级鲁丝片| 亚洲欧美网站在线观看| 久久精品九色| 国产一区丝袜| 国产一区二区三区久久| 国产乱码精品一区二区三区四区| 欧美在线观看视频一区| 欧美午夜不卡| 亚洲综合电影一区二区三区| 蜜芽一区二区三区| 欧美日韩亚洲国产精品| 国产精品2023| 久久av国产紧身裤| 亚洲精品影院在线观看| 激情欧美一区| 午夜在线精品偷拍| 西西人体一区二区| 婷婷成人在线| 日韩激情视频网站| 国产美女视频一区二区| 日本成人在线网站| 999视频精品| 国产麻豆一区| 天堂精品久久久久| 国产精品三p一区二区| 欧美久久精品| 婷婷六月综合| 久久免费精品| 日韩av免费大片| 日本成人在线网站| 亚洲先锋成人| 97久久精品| 欧美日韩 国产精品| 亚洲va久久久噜噜噜久久| 婷婷色综合网| 国产欧美一区二区三区国产幕精品 | 五月激情久久| 国产综合激情| 亚洲精品888| 免费在线小视频| 欧美一区激情| 欧美日韩在线网站| 国产乱码精品| 另类激情亚洲| 欧美日韩亚洲国产精品| 亚洲精品小说| 欧美激情另类| 国产亚洲电影| 亚洲欧洲美洲国产香蕉| 久久a爱视频| 天堂久久av| 午夜精品影院| 福利一区和二区| 日韩在线观看一区二区三区| 国产中文一区| 国产aⅴ精品一区二区四区| 日产欧产美韩系列久久99| 欧美精品一区二区久久| 人人精品久久| 另类亚洲自拍| 国产高清久久| 日韩综合精品| 美腿丝袜在线亚洲一区| 日韩国产精品久久久久久亚洲| 日韩不卡在线| 免费在线播放第一区高清av| 婷婷精品在线| 欧美日韩国产传媒| 人人草在线视频| 蜜桃精品视频| 国产精品v一区二区三区| 丝袜美腿一区二区三区| 精品国模一区二区三区| 欧美激情日韩| 日本午夜精品久久久久| 中文不卡在线| 久久福利精品| 在线精品视频在线观看高清| 午夜av成人| 久久精品国产免费| 国产精品xvideos88| 91国内精品| 日本成人在线不卡视频| 日韩欧乱色一区二区三区在线| 国产精品呻吟| 国产国产精品| 久久久久午夜电影| 麻豆网站免费在线观看| 久久亚州av| 久久久亚洲欧洲日产| 日韩精品一区二区三区中文字幕| 噜噜噜躁狠狠躁狠狠精品视频 | 图片区亚洲欧美小说区| 亚洲三级欧美| 国产一区二区三区四区五区| 国产精区一区二区| 国产另类在线| 国产香蕉精品| 国产日本久久| 日本精品久久| 国产精品一区二区三区av| 欧美日本不卡高清| 国产精品乱战久久久| 国产欧美日韩精品一区二区三区| 国产另类在线| 欧美在线观看天堂一区二区三区| 国产日产精品一区二区三区四区的观看方式| 亚洲欧美在线综合| 日韩av中文在线观看| 日韩av不卡一区二区| 91精品日本| 欧美激情三区| 久久精品五月| 中文一区一区三区高中清不卡免费| 老司机精品视频在线播放| 欧美激情aⅴ一区二区三区| 久久久久97| 日本蜜桃在线观看视频| 亚洲精品成人图区| 欧美影院三区| 婷婷综合激情| 天堂av一区| 欧美日韩亚洲一区在线观看| 韩国女主播一区二区三区| 亚洲国产成人二区| 伊人精品一区| 国产精品毛片在线| 日本在线不卡视频| 久久av国产紧身裤| 日韩一区三区| 亚洲免费高清| 欧美视频久久| 成人午夜亚洲| 伊人久久成人| 欧美亚洲色图校园春色| 免费亚洲一区| 国产成人精品福利| japanese国产精品| 亚洲精品免费观看| 国产精品xxx| 欧美黄色网页| 午夜一级久久| 国产精品久久久久久模特| 日韩久久精品网| 久久福利影视| 久久一区亚洲| 91超碰国产精品| 国产无遮挡裸体免费久久| caoporn视频在线| 亚洲午夜免费| 国产精品自在| 午夜久久免费观看| 深夜日韩欧美| 波多野结衣久久精品| 久久高清一区| 国产 日韩 欧美 综合 一区| 欧美日韩国产一区二区三区不卡| 91欧美极品| 日韩一区二区在线免费| 日韩欧美美女在线观看| 久久电影tv| 日韩超碰人人爽人人做人人添| 91综合网人人| 日韩欧美另类中文字幕| 午夜久久中文| 亚洲一区二区av| 91欧美在线| 日韩不卡手机在线v区| 日韩精品首页| 国产精品欧美在线观看| 午夜久久一区| 日韩av二区|