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

针对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日

相关文章

  • JavaScript常见JSON操作实例分析

    JavaScript常见JSON操作实例分析 本篇文章将介绍JavaScript中常用的JSON操作,包括JSON对象的创建、解析、修改等操作,并提供了多个实例来说明这些操作的使用场景。 JSON对象的创建 使用JavaScript中的JSON对象可以方便地创建和操作JSON格式的数据。要创建JSON对象,可以使用JSON.parse()函数解析一个包含JS…

    JavaScript 2023年6月10日
    00
  • Android实现网络多线程文件下载

    实现网络多线程文件下载在Android开发中非常常见,下面我会详细讲解这个过程的完整攻略。 1. 实现方式 Android实现网络多线程文件下载的方式是通过Java中的多线程实现的,其中主要使用到了Java IO和Java多线程的知识。可分为以下几个步骤: 创建HttpURLConnection对象,连接要下载的文件URL地址; 获取要下载的文件的总大小; …

    JavaScript 2023年5月28日
    00
  • JS的时间格式化和时间戳转换函数示例详解

    本文主要讲解JavaScript中的时间格式化和时间戳转换函数,主要包含以下内容: JavaScript中时间的基本概念和表示方法 时间格式化函数的基本思路和常见的格式化形式 时间戳转换函数的基本思路和实现方法 基于moment.js的时间格式化和转换示例 自定义时间格式化和转换函数的实现示例 1. JavaScript中时间的基本概念和表示方法 在Java…

    JavaScript 2023年5月27日
    00
  • JavaScript中的值类型详细介绍

    JavaScript中的值类型,又称为基本数据类型,共有六种:数字(Number)、字符串(String)、布尔值(Boolean)、空(Null)、未定义(Undefined)和符号(Symbol)。在本文中,我们将详细介绍每种类型的特点和用法。 数字(Number) 数字类型代表着数值,包括整数和浮点数。JavaScript使用的是双精度浮点数格式,即N…

    JavaScript 2023年5月28日
    00
  • 将string解析为json的几种方式小结

    让我们详细讲解一下如何将字符串解析为JSON的几种方式。 使用JSON库解析字符串 目前市面上有很多种JSON库可供选择,比如jsoncpp、rapidjson等。我们以jsoncpp为例进行讲解。 步骤一:引入头文件 #include <json/json.h> 步骤二:将字符串解析为JSON格式 std::string str = &quot…

    JavaScript 2023年5月27日
    00
  • 关于AOP在JS中的实现与应用详解

    关于AOP在JS中的实现与应用详解 什么是AOP AOP全称是Aspect Oriented Programming(面向方面编程)。它是一种编程范式,它的目的是通过对业务进行拆分,并将共同的、与业务无关的部分封装起来,使得系统具备可重复利用性、可维护性和可扩展性。 在AOP中,将系统中不同的逻辑功能划分为不同的功能单元——切面(Aspect),并通过提供预…

    JavaScript 2023年5月27日
    00
  • javascript实现将数字转成千分位的方法小结【5种方式】

    下面是讲解“JavaScript实现将数字转成千分位的方法小结【5种方式】”的完整攻略。 什么是千分位? 千分位是指将数字每隔三位加一个逗号表示的形式,比如:“1,234,567”。 为什么要使用千分位? 使用千分位可以使数字更加易读,尤其是对于大的数字更加方便观察。 实现方式 以下是五种JavaScript实现将数字转成千分位的方法: 方法一:toFixe…

    JavaScript 2023年5月28日
    00
  • JS中offset和匀速动画详解

    JS中offset和匀速动画详解 在前端开发中,动画效果可以增强用户体验,让页面更加生动。其中,匀速动画是一种基本的动画方式,而offset属性则可以获取一个元素在文档中的位置。 offset属性 offset属性指的是元素的位置偏移值,在JS中通过offsetTop和offsetLeft分别获取元素在文档中的上边界和左边界到包含元素的上边界和左边界之间的像…

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