vue跳轉到詳情頁的兩種實現(xiàn)方法
路由跳轉過程中的參數(shù)傳遞
業(yè)務場景:在電影列表頁面中點擊某一項的點擊名稱,跳轉到電影詳情頁,查看選中電影的詳細信息。這個過程就需要在跳轉的同時傳遞電影ID作為參數(shù),這樣,詳情頁才可以獲取到選中項的ID,從而發(fā)送請求,查詢詳細信息。
1. 準備一個電影列表頁:List.vue 一個電影詳情頁:Detail.vue
2. 配置路由:
a. 當訪問地址:http://localhost:8080/list時,看到列表頁。
b. 當訪問地址:http://localhost:8080/detail時,看到詳情頁。
3. 注意:需要在App.vue中添加占位符:
路由跳轉過程中的參數(shù)傳遞方式1
通過在請求資源路徑后用?拼接查詢字符串的方式,傳遞參數(shù):
<router-link to="/detail?id=7&name=zs">xx</router-link>
方法一: 問號版
List.vue列表頁: 列表項填入router-link標簽
<template> <tbody> <tr v-for="(item, i) in data.result" :key="item.id"> <td> <router-link :to="`/detail?id=${item.id}`">//問號版的 {{item.title}} </router-link> </td> </tr> </tbody> </template>
detail.vue詳情頁:
<template> <div> <h2>電影詳情頁</h2> <p>電影名稱:{{movieDate.title}}</p> <p>電影類型:{{movieData.type}}</p> </div> </template> <script> import myaxios from './http/MyAxios' export default{ data( ){ return{ movieData:{ },//綁定電影對象 } }, mounted( ){ //當前主鍵已經(jīng)掛載到DOM上,(已展示)時被vue自動調(diào)用 console.log('生命周期方發(fā)mounted被調(diào)用') let id = this.$router.query.id //接收請求路徑后的 ?key= value 格式的參數(shù)id console.log('接收到參數(shù)id:' + id) let url = "https://web.codeboy.com/bmdapi/movie-info/query" myaxios.get(url,{ id }).then(res =>{ console.log(res) //res.data.data中存儲了電影對象{ } this.movieDate = res.data.data }) } }; </script>
方法二:不帶問號版的
<router-link to="/detail/7">xx</router-link> this.$router.push('/detail/7')
目標頁如何接收該參數(shù)?
1、配置路由:
{ path:'/detail/:id', component: ( ) => import 'Detail.vue' }
該路由的配置,將會匹配:
/detail/7 => id:7 /detail/123 => id:123 /detail/abc => id:abc
vue將會自動封裝路徑參數(shù),放入this.$route.params屬性中。如下即可獲取該參數(shù):
mounted(){ let id = this.$route.params.id }
List.vue列表頁: 列表項填入router-link標簽
<template> <tbody> <tr v-for="(item, i) in data.result" :key="item.id"> <td> <img :src="item.cover" width="60px" @click="$router.push(`/detail/${item.id}`)"> </td> </tr> </tbody> </template>
router/index.js配置路由頁:
{ paht: '/detail/:id', name: 'detail', component: ( ) =>import ('../Detail.vue') }
detail.vue詳情頁:
<template> <div> <h2>電影詳情頁</h2> <p>電影名稱:{{movieDate.title}}</p> <p>電影類型:{{movieData.type}}</p> </div> </template> <script> import myaxios from './http/MyAxios' export default{ data( ){ return{ movieData:{ },//綁定電影對象 } }, mounted( ){ //當前主鍵已經(jīng)掛載到DOM上,(已展示)時被vue自動調(diào)用 console.log('生命周期方發(fā)mounted被調(diào)用') let id = this.$router.params.id //接收路徑參數(shù): /detail/id 格式的參數(shù)id console.log('接收到參數(shù)id:' + id) let url = "https://web.codeboy.com/bmdapi/movie-info/query" myaxios.get(url,{ id }).then(res =>{ console.log(res) //res.data.data中存儲了電影對象{ } this.movieDate = res.data.data }) } }; </script>
總結
到此這篇關于vue跳轉到詳情頁的兩種實現(xiàn)方法的文章就介紹到這了,更多相關vue跳轉到詳情頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue3中reactive數(shù)據(jù)被重新賦值后無法雙向綁定的解決
這篇文章主要介紹了vue3中reactive數(shù)據(jù)被重新賦值后無法雙向綁定的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05element el-table 表格限制多選個數(shù)功能
這篇文章主要介紹了element el-table 表格限制多選個數(shù)功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-03-03在vue中使用回調(diào)函數(shù),this調(diào)用無效的解決
這篇文章主要介紹了在vue中使用回調(diào)函數(shù),this調(diào)用無效的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08vue+swiper實現(xiàn)組件化開發(fā)的實例代碼
這篇文章主要介紹了vue+swiper實現(xiàn)組件化開發(fā)的相關資料,需要的朋友可以參考下2017-10-10