vue中跳转到详情页的两种方法

路由跳转过程中的参数传递

业务场景:在电影列表页面中点击某一项的点击名称,跳转到电影详情页,查看选中电影的详细信息。这个过程就需要在跳转的同时传递电影ID作为参数,这样,详情页才可以获取到选中项的ID,从而发送请求,查询详细信息。

1. 准备一个电影列表页:List.vue 一个电影详情页:Detail.vue
2. 配置路由:
a. 当访问地址:http://localhost:8080/list时,看到列表页。
b. 当访问地址:http://localhost:8080/detail时,看到详情页。
3. 注意:需要在App.vue中添加占位符:

路由跳转过程中的参数传递方式1

通过在请求资源路径后用?拼接查询字符串的方式,传递参数:

<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( ){  //当前主键已经挂载到DOM上,(已展示)时被vue自动调用
    console.log('生命周期方发mounted被调用')
    let  id  = this.$router.query.id  //接收请求路径后的   ?key= value  格式的参数id
    console.log('接收到参数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')

目标页如何接收该参数?
1、配置路由:

{
path:'/detail/:id',
component: ( ) => import 'Detail.vue'
}

该路由的配置,将会匹配:

/detail/7    =>   id:7
/detail/123  =>   id:123
/detail/abc  =>   id:abc

vue将会自动封装路径参数,放入this.$route.params属性中。如下即可获取该参数:

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( ){  //当前主键已经挂载到DOM上,(已展示)时被vue自动调用
console.log('生命周期方发mounted被调用')
let  id  = this.$router.params.id  //接收路径参数: /detail/id   格式的参数id
console.log('接收到参数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>
  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Vue 3使用Agent Vue和TypeScript(TS)进行跳转详情页,你可以按照以下步骤操作: 1. 首先,确保你已经安装了Vue 3和Agent Vue。你可以使用npm或yarn进行安装: ``` npm install vue@next agent-vue ``` 或者 ``` yarn add vue@next agent-vue ``` 2. 在你的Vue组件,首先导入Agent Vue的`useRouter`函数和相关的类型定义: ```typescript import { useRouter } from 'agent-vue'; import { RouteLocationNormalized } from 'vue-router'; ``` 3. 在组件定义一个函数来处理跳转详情页的逻辑。你可以使用`useRouter`函数获取路由实例,然后使用`push`方法进行跳转: ```typescript export default { // ... methods: { goToDetailPage() { const router = useRouter(); const detailRoute: RouteLocationNormalized = { name: 'detail', // 替换为你的详情页路由名称 params: { // 传递的参数 }, }; router.push(detailRoute); }, }, // ... }; ``` 4. 在模板使用`goToDetailPage`方法来触发跳转事件。你可以在按钮点击事件或者其他需要跳转的地方调用该方法: ```html <template> <button @click="goToDetailPage">跳转详情页</button> </template> ``` 确保将`goToDetailPage`方法绑定到对应的事件上。 这样,当点击按钮时,页面将会跳转到你定义的详情页路由。 请注意,上述代码的路由名称和参数是示例,请根据你的实际情况进行修改。另外,确保在Vue Router配置了对应的详情页路由。 希望能帮到你!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值