vue-router传递参数的几种方式

params方式

路由定义

    {
        path: "/user",
        name: 'user',//注意一定要命名该路由,即编写name字段
        component: user,
    },

html部分

声明式导航

    <router-link :to="{ name: 'user', params: { id: '123' } }"
      >params传参</router-link>

编程式导航

	router.push({ name: 'user', params: { id: '123' }})

参数接收

	this.$route.params.id

注:
1.定义路由时,一定要命名路由也就是添加name字段,并且导航时也需要提供路由的name,如果提供了 path,params 会被忽略。

    <router-link :to="{ path: 'user', params: { id: '123' } }"
      >User(params传参不生效)</router-link>

避免上述写法。
2.刷新页面时传递的参数会丢失,因此实际项目中不推荐用此方法传递参数

query方式(url查询参数)

路由定义

    {
        path: "/register",
        component: register,
    },

html部分

声明式导航

    <router-link
      :to="{
        path: 'register',
        query: { plan: 'private' },
      }">query传参</router-link>

编程式导航

	router.push({ path: 'register', query: { plan: 'private' }})

参数接收

	this.$route.query.plan

注:
1.参数的key/value会显示在地址栏,并且刷新页面参数不丢失。

动态路由

路由定义

    {
        path: "/user/:id",// 动态路径参数 以冒号开头
        component: user,
    },

html部分

    <router-link :to="{ path: '/user/456' }"
      >动态路由匹配</router-link>

参数接收

	this.$route.params.user

注:
1.我们也可以使用动态路由匹配的方式来实现参数的传递,一个“路径参数”使用冒号 : 标记。当匹配到一个路由时,参数值会被设置到 this.$route.params,可以在每个组件内使用。

注意事项

路由参数类型

路由参数值只支持字符串类型,如果要传递多个属性,建议使用对象进行传参,利用query方式,在传递参数之前先将参数值由对象转化为字符串,同样接收的时候再由字符串转换回对象类型。

html部分
	<router-link
      :to="{
        path: 'register',
        query: { account },
      }"
      >query传参</router-link>
<script>
	export default {
	  data() {
	    return {
	      account: "",
	    };
	  },
	  mounted() {
	    this.account = JSON.stringify({ id: "456", name: "小赵", sex: "男" });
	  },
	};
</script>

参数接收

	JSON.parse(this.$route.query.account)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值