Vue路由传参

本文详细介绍了Vue.js中三种常见的路由传参方式:基本路由传参、动态路由匹配及命名路由传参,并提供了具体的实现代码示例。

废话不多说,上干货!

1.基本路由传参

传值:

写法一:

this.$router.push('/path地址?参数1=值1&参数2=值2')

写法二:

this.$router.push({
     path:'/path地址',
     query:{
        参数1:值1,
        参数2:值2
      }
  })

接收:

this.$route.query.参数名

注意区分router 和 route 

router:路由的实例化对象,管理整个路由

route:提供当前路由的基本信息

2.动态路由匹配

路由配置:

{
  path:'/path地址/参数名?'        //?表示参数传值可传可不传,不带?则一定要传
   
  component:.......

}

参数名后的?表示参数传值可传可不传,不带?则一定要传

传:

this.$router.push('/path地址/参数值')

收:

this.$route.params.参数名

3.命名路由name传参

路由配置:

{
  path:'/',
   
  name:'home'

}

一(query):(刷新不受影响)

传:

this.$router.push({
     name:'home',
     query:{
        参数:值
      }
  })

收:

this.$route.query.参数名

二:(params) (刷新后参数就没了,数据长度和类型不受限制,不会在url中显示,存在内存中)

传:

this.$router.push({
     name:'home',
     params:{
        参数:值
      }
  })

收:

this.$route.params.参数名

Vue.js 中实现路由传参是开发单页应用(SPA)时常见的需求,用于在不同页面之间传递数据。以下是几种常用的 Vue.js 路由传参方法及其使用方式: ### 1. 使用 `name` 匹配命名路由传参 通过命名路由传参可以使用 `params` 属性来传递参数。这种方式适用于参数不会直接暴露在 URL 中的场景。 示例代码如下: ```javascript // 定义路由时设置 name 属性 const routes = [ { path: '/user/:id', name: 'User', component: UserComponent } ] // 在组件中跳转并传参 this.$router.push({ name: 'User', params: { id: 123 } }) ``` 在目标组件中可以通过 `this.$route.params.id` 获取参数 `id` [^1]。 ### 2. 使用 `query` 传参 `query` 传参会将参数以查询字符串的形式附加在 URL 后面,适合需要分享或书签的场景。 示例代码如下: ```html <router-link :to="{ path: '/Home', query: { username: 'jspang', id: '555' } }">跳转到首页</router-link> ``` 在目标组件中可以通过 `this.$route.query` 获取所有查询参数 [^2]。 ### 3. 使用 `state` 传参Vue 3) 在 Vue 3 中,可以通过 `state` 属性来传递参数,这种方式不会将参数暴露在 URL 中,但需要注意页面刷新后参数会丢失。 示例代码如下: ```javascript const handleClick = () => { router.push({ path: "/editor", state: { name: name.value, }, }); }; ``` 在目标组件中可以通过 `this.$route.state.name` 获取传递的参数 [^3]。 ### 4. 动态路由传参 动态路由允许在 URL 中定义参数,通常用于需要根据参数动态加载内容的场景。 示例代码如下: ```javascript // 定义动态路由 const routes = [ { path: '/user/:id', component: UserComponent } ] // 在组件中跳转并传参 this.$router.push({ path: `/user/${123}` }) ``` 在目标组件中可以通过 `this.$route.params.id` 获取参数 `id` [^4]。 ### 5. 使用 `meta` 传递静态信息 虽然 `meta` 主要用于传递静态信息,但在某些情况下也可以用来传递一些固定的参数。 示例代码如下: ```javascript // 定义路由时设置 meta 属性 const routes = [ { path: '/about', component: AboutComponent, meta: { title: '关于页面' } } ] // 在组件中可以通过 $route.meta.title 获取 meta 信息 ``` ### 注意点 - 使用 `params` 和 `state` 传参时,参数不会显示在 URL 中,适合传递敏感或不需要暴露的数据。 - 使用 `query` 传参时,参数会显示在 URL 中,适合需要分享或书签的场景。 - 动态路由参数必须在路径中定义,且只能通过 `params` 获取。 - 页面刷新后,`state` 传参的数据会丢失,不适合需要持久化的数据。 ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值