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

您的位置:首頁技術文章
文章詳情頁

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

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

我們在開發單頁面應用時,有時需要進入某個路由后基于參數從服務器獲取數據,那么我們首先要獲取路由傳遞過來的參數,從而完成服務器請求,所以,我們需要了解路由傳參的幾種方式,以下方式同 vue-router@4 。

編程式路由傳參

除了使用 <router-link> 創建 a 標簽來定義導航鏈接,我們還可以借助 router 的實例方法,通過編寫代碼來實現。

1. 通過 params 傳遞

路由配置

路徑參數 用冒號 : 表示。

const routes = [ // 動態段以冒號開始 { path: ’details/:id’, name: 'details', component: Details },]

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

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

注意,如果提供了 path , params 會被忽略:

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

組件獲取數據

當一個路由被匹配時,它的 params 的值將在每個組件中以 this.$route.params 的形式暴露出來。

const Details = { template: ’<div>Details {{ $route.params.id }} </div>’, created() { // 監聽路由變化 this.$watch( () => this.$route.params, (toParams, previousParams) => { // 對路由變化做出響應... } ) },}2. 通過 query 傳遞

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

路由配置

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

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’ }})組件獲取數據

組件通過 $route.query 獲?。?/p>

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

要對同一個組件中參數的變化做出響應的話,你可以簡單地 watch $route 對象上的任意屬性,在這個場景中,就是 $route.query 。

3. 通過 hash 傳遞

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

路由配置

使用 hash 時,以下三種方式都是可行的(同 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’})組件獲取數據

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

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

在組件中使用 $route 會與路由緊密耦合,這限制了組件的靈活性,因為它只能用于特定的 URL。雖然這不一定是件壞事,但我們可以通過 props 配置來解除這種行為。

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

1. 布爾模式

當 props 設置為 true 時, route.params 將被設置為組件的 props。

例如下面的代碼是通過 $route 的方式獲取動態字段 id :

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

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

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

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

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

2. 對象模式

當 props 是一個對象時,它將原樣設置為組件 props。當 props 是靜態的時候很有用。

路由配置

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

組件中獲取數據

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

<Hello /> 組件默認顯示 Hello Vue,但路由配置了 props 對象,當路由跳轉到 /hello 時,會顯示傳遞過來的 name , 頁面會顯示為 Hello World。

3. 函數模式

可以創建一個返回 props 的函數。這允許你將參數轉換為其他類型,將靜態值與基于路由的值相結合等等。

路由配置

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

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

當 URL 為 /hello?say=World 時, 將傳遞 {name: ’World!’} 作為 props 傳給 Hello 組件。

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

此時頁面將渲染:

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

注意:請盡可能保持 props 函數為無狀態的,因為它只會在路由發生變化時起作用。如果你需要狀態來定義 props,請使用包裝組件,這樣 vue 才可以對狀態變化做出反應。

其他方式

1. 通過 Vuex 進行傳遞

1. store 存儲狀態; 2. A 組件更改 store 中的狀態; 3. B 組件從 store 中獲取。

2. 通過前端本地存儲等方式

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

到此這篇關于Vue 路由組件傳參的 8 種方式的文章就介紹到這了,更多相關Vue 路由組件傳參內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
私拍精品福利视频在线一区| 影视先锋久久| 国产农村妇女精品一二区| 久久久久国产精品一区三寸| 日韩福利一区| 日韩另类视频| 亚洲电影在线一区二区三区| 伊人精品视频| 快she精品国产999| 亚洲欧美日韩综合国产aⅴ| 免费观看在线色综合| 亚洲精品伦理| 国产精品白丝一区二区三区| 久久精品一区| 日韩中文欧美| 99在线精品视频在线观看| 蜜桃av一区二区| 人人精品久久| 精品高清久久| 久久久久久免费视频| 激情综合网五月| 亚洲视频国产| 国产高清精品二区| 亚洲永久av| 黑丝美女一区二区| 亚洲欧美在线专区| 久久精品欧洲| 午夜日韩福利| 国产免费久久| 9999国产精品| 亚洲一区久久| 国产精品激情电影| 久久精品动漫| 日本国产一区| 日韩电影免费网址| 亚洲深夜福利在线观看| 国产黄色一区| 亚洲国产日韩欧美在线| 奇米色欧美一区二区三区| 国产日产一区| 亚洲精品88| 亚洲精品麻豆| 国产一区福利| 日韩在线卡一卡二| 久久精品国产久精国产爱| 亚洲午夜精品久久久久久app| 亚洲精品一级| 六月婷婷综合| 少妇精品在线| 97国产成人高清在线观看| 免费成人在线影院| 久久女人天堂| 免费成人性网站| 精品国产乱码久久久久久1区2匹| 欧美福利专区| 欧美日韩午夜电影网| 午夜欧美巨大性欧美巨大| 亚洲2区在线| 成人在线网站| 国产精品亚洲四区在线观看 | 午夜在线观看免费一区| 欧美激情五月| 久久不射网站| а√天堂中文在线资源8| 国产模特精品视频久久久久| 久久99青青| 日韩精品一卡二卡三卡四卡无卡| 麻豆极品一区二区三区| 石原莉奈在线亚洲三区| 日韩国产在线| 国产一精品一av一免费爽爽| 日韩午夜免费| 天堂日韩电影| 精品国内亚洲2022精品成人| 综合日韩在线| 免费av一区| 国产成人精品一区二区三区在线| 亚洲精品裸体| 久久精品91| 久久久久黄色| 日本不卡在线视频| 黄色国产精品| 天堂av在线| 久久精品国产99国产精品| 深夜福利亚洲| 久久亚洲风情| 伊人久久大香线蕉av超碰演员| 福利片在线一区二区| 久久国内精品| 日韩专区欧美专区| 夜夜精品视频| 国产中文一区| 亚洲欧洲高清| 精品深夜福利视频| 国产精品一区二区99| 亚洲一区二区三区久久久| 欧美精品一区二区久久| 国产麻豆久久| 亚洲成a人片| av日韩中文| 国产一区二区三区探花| 国产精品蜜月aⅴ在线| 日韩精品免费视频人成| 日本大胆欧美人术艺术动态| 一区在线免费| 尤物网精品视频| 久久国产亚洲精品| 欧美13videosex性极品| 四虎国产精品免费观看| 久久精品国产99国产| 久久国内精品自在自线400部| 日韩精品一区二区三区中文字幕| 丝袜美腿亚洲一区| 中文精品视频| 好看的av在线不卡观看| 免费不卡中文字幕在线| 亚洲国产一区二区在线观看| 国产一区久久| 日韩视频免费| 日韩在线一区二区| 亚洲专区视频| 亚洲九九精品| 亚欧洲精品视频在线观看| 综合一区二区三区| 日韩有码av| 亚洲精选91| 91国内精品| 国产精品高清一区二区| 久久a爱视频| 鲁鲁在线中文| 成人日韩在线| 欧美a级一区| 快she精品国产999| 日本久久二区| 国产精品激情| 首页国产精品| 久久国产中文字幕| 久久国产99| 天堂av一区| 国产精品视频一区二区三区| 国产精品亚洲人成在99www| 久久99精品久久久久久园产越南| 精品香蕉视频| 伊人久久大香线蕉av不卡| 99热精品在线| 国产一卡不卡| 热三久草你在线| 欧洲毛片在线视频免费观看| 免费在线观看一区二区三区| 国产一卡不卡| 超碰在线99| 国产精品美女久久久| 日韩精品社区| 国内精品麻豆美女在线播放视频| 99精品在线观看| 中文日韩欧美| 欧美偷窥清纯综合图区| a国产在线视频| 日韩视频一区| 国产精选久久| 色吊丝一区二区| 亚洲一区二区三区久久久| 久久av偷拍| 五月婷婷亚洲| 国产私拍福利精品视频二区| 色婷婷综合网| 性欧美长视频| 国产精品视频一区二区三区四蜜臂| 国产夫妻在线| 快she精品国产999| 国产欧美另类| 欧美日中文字幕| 日韩激情啪啪| 日韩精品dvd| 亚洲精品婷婷| 日韩网站中文字幕| 亚洲香蕉久久| 亚洲国产福利| 视频一区免费在线观看| 精品国产99| 日韩中文字幕av电影| 精品美女在线视频| 久久福利影视| 国产aⅴ精品一区二区三区久久| 日韩午夜在线| 欧美激情视频一区二区三区免费 | 国产精品调教| 欧美精品一二| 欧美激情一区| 国产精品美女| 日韩国产欧美| 日本亚洲不卡| 亚洲午夜一级| 欧美欧美黄在线二区| 99久久婷婷| 国产精品mm| 日韩在线一二三区| 亚洲va中文在线播放免费| 91精品国产自产观看在线| 国产精品av一区二区|