Vue3路由传参

一.router-link

①不带参数

<router-link :to="{name:'guest'}">跳转到路由为guest页面</router-link>
<router-link :to="{path:'guest'}">跳转到路由为guest页面</router-link>

router-link中链接如果是**’ / '**开始就是从根路由开始,如果开始不带 ’ / ',则从当前路由开始.

举个栗子: 当前页面所在路由为 /home/goods 设置router-link链接

{path:'guest'} 跳转后页面所在路由为 /home/guest

{path:'/guest'} 跳转后页面所在路由为 /guest

②带参数

1️⃣query传参数

<router-link :to="{path:'guest',query:{id:1}}">跳转到路由为guest页面</router-link>
<router-link :to="{name:'guest',query:{id:1}}">跳转到路由为guest页面</router-link>

不需要路由配置

2️⃣接收参数

<script setup lang="ts">
    import { useRoute } from 'vue-router';
    import { onMounted } from 'vue';
    const route = useRoute();
    onMounted(() => {
        console.log(route.query.id);  //1
    })
</script>

1️⃣params传参数

<router-link :to="{name:'guest',params:{id:1}}">跳转到路由为guest页面</router-link>

路由配置path:"/home/:id"或者path:"/home.id"

路由不配置path中的参数id 第一次可请求,刷新页面id会消失

路由配置path中的参数id 刷新页面id会保留

2️⃣接收参数

<script setup lang="ts">
    import { useRoute } from 'vue-router';
    import { onMounted } from 'vue';
    const route = useRoute();
    onMounted(() => {
        console.log(route.params.id); //1
    })
</script>

二.router.push()

代码环境

<template>
    <button @click="clickGo">跳转到路由为guest页面</button>
</template>
<script setup lang="ts">
import { useRouter } from 'vue-router';
const router = useRouter();
const clickGo = () => {
   router.push('guest'); //调用router.push()
}
</script>

①不带参数

router.push('guest');
router.push({name:'guest'});
router.push(path:{'guest'});

②带参数

1️⃣query传参数

router.push({ name: 'guest', query: { id: 1 } });
router.push({ path: 'guest', query: { id: 1 } });

2️⃣接收参数

<script setup lang="ts">
    import { useRoute } from 'vue-router';
    import { onMounted } from 'vue';
    const route = useRoute();
    onMounted(() => {
        console.log(route.query.id);  //1
    })
</script>

1️⃣params传参数

router.push({ name: 'guest', params: { id: 1 } });

2️⃣接收参数

<script setup lang="ts">
    import { useRoute } from 'vue-router';
    import { onMounted } from 'vue';
    const route = useRoute();
    onMounted(() => {
        console.log(route.params.id); //1
    })
</script>

三.路由props传递

我们可以将下面的代码

//路由
const routes = [{ path: '/user/:id', component: User }]
//组件使用
const User = {
  template: '<div>User {{ $route.params.id }}</div>'
}

替换成

//路由
const routes = [{ path: '/user/:id', component: User, props: true }]
//组件使用
const User = {
  // 请确保添加一个与路由参数完全相同的 prop 名
  props: ['id'],
  template: '<div>User {{ id }}</div>'
}

~~个人笔记,不足之处请指出··

  • 14
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 3中,可以使用两种方式进行路由传参:query参数和params参数。 1. 使用query参数进行路由传参。在A页中,可以使用`<router-link>`标签传递参数,将参数作为query的一部分传递给B页。例如: ``` <router-link :to="{ path: '/detail', query: { id: '1001' } }">到详情页</router-link> ``` 在B页中,可以使用`useRoute`方法从路由对象中获取参数。例如: ``` import { useRoute } from 'vue-router' const route = useRoute() console.log('route:', route.query.id) ``` 2. 使用params参数进行路由传参。在A页中,可以使用`<router-link>`标签传递参数,将参数作为params的一部分传递给B页。例如: ``` <router-link :to="{ name: 'detail', params: { id: '1001' } }">到详情页</router-link> ``` 在B页中,同样可以使用`useRoute`方法从路由对象中获取参数。例如: ``` import { useRoute } from 'vue-router' const route = useRoute() console.log('route:', route.params.id) ``` 需要注意的是,在路由配置文件(通常是index.js)中,需要将路由路径配置为动态路径。例如: ``` path: '/detail/:id' ``` 这样,就可以在Vue 3中使用query参数或params参数进行路由传参了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue路由传参 vue路由传参](https://download.csdn.net/download/weixin_39709920/87065136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue3路由及传参](https://blog.csdn.net/leveretz/article/details/127765076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月落乌江

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值