vue3中路由传参query、params及动态路由传参详解

yizhihongxing

针对vue3中的路由传参query、params及动态路由传参,我来为大家做一份详细的攻略。

一、前置知识

Vue-router

Vue提供了一款官方的路由插件Vue-router,可以方便的实现SPA应用的路由管理。若未安装Vue-router,可以通过以下命令进行安装:

npm install vue-router

动态路由

动态路由是 vue-router 的高级技术。它允许在路由路径中使用“参数”,并且没有严格的路由匹配规则。它允许您捕获所有匹配特定模式的路径,并将其作为动态部分传递给组件。

路由传参

路由传参是指将数据传递至路由中,以供路由在跳转时使用。vue-router中的路由传参分为两种:

  1. 通过query方式传递参数

使用query方式,所有参数都会被添加到URL的query参数中。参数可以通过$route.query属性访问。

  1. 通过params方式传递参数

使用params方式时,参数会被动态地插入到URL的路由中。通过$route.params属性即可访问。

二、路由传参示例解析

假设我们现在需要跳转到一个详情页面,并将一些信息传递到该页面中。为了方便展示,我们这里使用vue-router提供的官方示例(https://github.com/vuejs/vue-router/tree/dev/examples)。

示例一:query方式传递参数

该示例中的代码结构如下:

|--src
   |--views
       |--Home.vue
       |--About.vue
       |--User.vue
       |--UserHome.vue
   |--router
       |--index.js

Home.vue页面中有一个“to user”按钮,点击后可以跳转到User.vue页面。我们希望在页面间传递user参数(如用户ID)。

1.定义路由

// src/router/index.js
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
import User from '../views/User.vue'

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    component: About
  },
  {
    path: '/user',
    name: 'User',
    component: User
  }
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})

export default router

2.在页面间传递参数

<!-- Home.vue -->
<template>
  <div class="home">
    <h1>Home</h1>
    <button @click="toUser">to user</button>
  </div>
</template>

<script>
export default {
  methods: {
    toUser() {
      // 通过query方式传递参数(即?后面的参数)
      this.$router.push({ path: '/user', query: { user: '123' }})
    }
  }
}
</script>
<!-- User.vue -->
<template>
  <div class="user">
    <h1>User</h1>
    <p>User ID: {{ $route.query.user }}</p>
  </div>
</template>

<script>
export default {
}
</script>

在Home.vue页面中,点击“to user”按钮时,将通过this.$router.push方法跳转至User.vue页面,并传递一个名为user的参数,参数值为'123'。在User.vue页面中,使用$route.query即可获取该参数的值。

示例二:params方式传递参数

该示例中的代码结构如下:

|--src
   |--views
       |--Home.vue
       |--About.vue
       |--User.vue
       |--UserHome.vue
   |--router
       |--index.js

Home.vue页面中有一个“to user home”按钮,点击后可以跳转到UserHome.vue页面。我们希望在页面间传递user参数(如用户ID)。

1.定义路由

// src/router/index.js
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
import User from '../views/User.vue'
import UserHome from '../views/UserHome.vue'

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    component: About
  },
  {
    path: '/user/:user',
    name: 'User',
    component: User,
    children: [
      {
        path: '',
        component: UserHome
      }
    ]
  }
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})

export default router

2.在页面间传递参数

<!-- Home.vue -->
<template>
  <div class="home">
    <h1>Home</h1>
    <button @click="toUserHome">to user home</button>
  </div>
</template>

<script>
export default {
  methods: {
    toUserHome() {
      // 通过params方式传递参数(即在path中定义参数)
      this.$router.push({ name: 'User', params: { user: '123' }})
    }
  }
}
</script>
<!-- UserHome.vue -->
<template>
  <div class="user-home">
    <h2>UserHome</h2>
    <p>{{ $route.params.user }}'s home</p>
  </div>
</template>

<script>
export default {
}
</script>

在Home.vue页面中,点击“to user home”按钮时,将通过this.$router.push方法跳转至User.vue页面,并传递一个名为user的参数,参数值为'123'。在User.vue页面中,使用$route.params即可获取该参数的值。同时,我们还可以在User.vue页面中定义子路由,以UserHome.vue为例,可以实现更加复杂的页面结构。注意,用户ID这种唯一标识符通常用params方式传递更加符合使用规范。

希望以上示例能够帮助大家更好地掌握vue3中路由传参query、params及动态路由传参的使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue3中路由传参query、params及动态路由传参详解 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JS获取当前网址、主机地址项目根路径

    获取当前网址、主机地址、项目根路径这些信息,常用于前端框架的开发中,例如:设置cookie、动态加载CSS、JS等资源、Ajax请求API等。 获取当前网址 我们可以使用 window.location 对象来获取当前网址,window.location.href 属性可返回当前页面的完整URL,包括协议、主机名、路径和查询部分。 const current…

    JavaScript 2023年6月11日
    00
  • JavaScript数组Array的一些常用方法总结

    JavaScript数组Array的一些常用方法总结 什么是JavaScript数组? JavaScript数组(Array)是一组按照顺序排列的值的集合。值可以是任何数据类型。数组中的元素可以通过索引值进行访问。 常用方法 1.添加元素 push() 将一个或多个元素添加到数组的末尾,并返回新数组的长度。 语法: array.push(element1, …

    JavaScript 2023年5月27日
    00
  • 基于JS实现带并发限制的异步调度器

    下面我将详细讲解“基于JS实现带并发限制的异步调度器”的完整攻略。 首先,我们需要明确“异步调度器”的定义。它是用于管理和控制异步任务执行的工具,常见的应用场景有批量请求处理、网络爬虫、图片下载等。为了避免过度并发导致系统资源的浪费,我们需要对任务的并发量进行限制,这就需要实现一个带并发限制的异步调度器。 接下来,我们将介绍如何利用JavaScript实现带…

    JavaScript 2023年6月11日
    00
  • js实现时钟定时器

    关于JS实现时钟定时器的攻略如下: 确定设计思路 1.获取当前时间2.计算时针、分针、秒针的位置3.将时针、分针、秒针对应的角度应用到实际页面上 获取当前时间 我们需要获取当前的系统时间,这可以通过JS的Date对象实现。使用 new Date() 可以初始化一个Date对象,然后分别获取当前时间的小时、分钟、秒等信息。 const now = new Da…

    JavaScript 2023年5月27日
    00
  • Javascript Date getFullYear() 方法

    以下是关于JavaScript Date对象的getFullYear()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的getFullYear()方法 JavaScript Date对象的getFullYear()方法返回一个表示年的四位数字。该方法可用获取当前日期的年份。 下是使用Date对象的getFullYear()方法的示例:…

    JavaScript 2023年5月11日
    00
  • JavaScript实现将数组中所有元素连接成一个字符串的方法

    实现将数组中所有元素连接成一个字符串的方法有以下两种: 方法一:Array.prototype.join() JavaScript中可以使用Array.prototype.join()函数将数组中的所有元素连接成一个字符串。 使用格式:Array.join(separator) 参数说明:- separator:可选参数,指定分隔符,将数组中的元素连接成字符…

    JavaScript 2023年5月28日
    00
  • js对象浅拷贝和深拷贝详解

    JS对象浅拷贝和深拷贝详解 在JavaScript中,对象是非常重要的数据类型,它允许我们用键值对的形式来表示和存储数据。当我们需要复制一个对象时,需要了解什么是浅拷贝和什么是深拷贝。本文将详细解释这两种拷贝方式,并提供实例进行说明。 什么是浅拷贝 浅拷贝是指复制出来的新对象的属性是源对象的引用,而不是属性值的拷贝。也就是说,当源对象属性的值为对象或数组时,…

    JavaScript 2023年5月27日
    00
  • JS倒计时代码汇总

    以下是详细的“JS倒计时代码汇总”的攻略。 概述 倒计时在Web开发中非常有用,比如用于处理限时优惠促销,或者用于展示一些即将到来的重要事件。本文将介绍JS倒计时的一些常用代码,帮助开发者轻松地实现倒计时功能。 普通倒计时 普通倒计时的代码非常简单,在代码中设定截止时间,然后不断更新展示倒计时的信息即可。 const deadline = new Date(…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部