Vue3快速上手(十六)Vue3路由传参大全

在这里插入图片描述
Vue3路由传参

一、传参的多种方式

1.1 拼接方式

这种方式适合传递单个参数的情况,比如点击查看详情,传个id这样的场景

传参:

<RouterLink to="/person?id=1" active-class="active">person</RouterLink>
<!-- 一般是这样写,动态传参 -->
<RouterLink :to="`/person?id=${obj.id}`" active-class="active">person</RouterLink>

接参:

import { useRoute } from 'vue-router';

// 接收路由传参
let route = useRoute()
console.log('useRoute()-->', route);
console.log('接参:id = ', route.query.id);

在这里插入图片描述

1.2 对象方式

对象方式,适合一起传递多个参数,比较清晰明了,使用拼接方式虽然也能实现,但杂乱无章,不易维护,且容易出错。
传参:

<RouterLink :to="{
  path: '/person',
   query: {
     id: 1,
     name: '王大拿',
     age: 56
   }
 }" active-class="active">
   person
</RouterLink>

接参:

import { toRefs } from 'vue'
import { useRoute } from 'vue-router';

// 接收路由传参
let route = useRoute()
let {query} = toRefs(route)
console.log('接参:id = ', query.value.id);
console.log('接参:name = ', query.value.name);
console.log('接参:age = ', query.value.age);

在这里插入图片描述

1.3 params参数方式

params方式,需要在路由上设置需要传递参数的占位,如下:我在person后占位3个参数,且age为不必填项。id和name为必填项

// 创建1个路由器
const router = createRouter({
    // 路由器的工作模式
    history: createWebHistory(),
    /* 多个路由配置 */
    routes: [
        {
            name: 'ren',
            path: '/person/:id/:name/:age?',
            component: PersonVue
        }
    ]
});

也有2种方式,拼接路径方式、传递对象方式:

1.3.1 params拼接路径方式

传参:这里不传递age,因为上面设置age不是必传项

<RouterLink to="/person/1/王小拿" active-class="active">person</RouterLink>

接参:这里接params参数

import { toRefs } from 'vue'
import { useRoute } from 'vue-router';

// 接收路由传参
let route = useRoute()
console.log('route->', route);

let {params} = toRefs(route)
console.log('接参:id = ', params.value.id);
console.log('接参:name = ', params.value.name);
console.log('接参:age = ', params.value.age);

在这里插入图片描述

1.3.2 params传递对象方式

** ☆这里和1.2里不一致的是**:用的是name和params传递。1.2里用个是:path和query传递。
传参:

<RouterLink :to="{
      name: 'ren',
      params: {
        id: 1,
        name: '王大拿',
        age: 56
      }
}" active-class="active">
	person
</RouterLink>

接参:这里接params参数

import { toRefs } from 'vue'
import { useRoute } from 'vue-router';

// 接收路由传参
let route = useRoute()
console.log('route->', route);

let {params} = toRefs(route)
console.log('接参:id = ', params.value.id);
console.log('接参:name = ', params.value.name);
console.log('接参:age = ', params.value.age);

在这里插入图片描述

1.4 props方式

1.4.1 props方式1

基于1.3params方式传递参数,开启props为true。那么就可以通过defineProps(['id', 'name', 'age'])直接接收参数,并在页面上展示。

// 创建1个路由器
const router = createRouter({
    // 路由器的工作模式
    history: createWebHistory(),
    /* 多个路由配置 */
    routes: [
        {
            name: 'ren',
            path: '/person/:id/:name/:age?',
            component: PersonVue,
            props: true
        }
    ]
});

传参:

<RouterLink to="/person/1/王小拿" active-class="active">person</RouterLink>

接参:这里通过defineProps()接参数

<template>
    <div class="person">
        <h3>ID{{ id }}</h3>
        <h3>姓名:{{ name }}</h3>
        <h3>年龄:{{ age }}</h3>
    </div>
</template>

<script lang='ts' setup name="PersonCom">
defineProps(['id', 'name', 'age'])
</script>

在这里插入图片描述

1.4.2 props方式2

通过props(route){}函数的方式,传递参数。这种方式既支持params对象方式,也支持query对象的方式。

(一)params对象方式:
需要占位,返回route.params

// 创建1个路由器
const router = createRouter({
    // 路由器的工作模式
    history: createWebHistory(),
    /* 多个路由配置 */
    routes: [
        {
            name: 'ren',
            path: '/person/:id/:name/:age?',
            component: PersonVue,
            props(route){
                return route.params
            }
        }
    ]
});

传参:

<RouterLink :to="{
  name: 'ren',
  params: {
    id: 1,
    name: '王大拿',
    age: 56
  }
}" active-class="active">
  person
</RouterLink>

接参:这里通过defineProps()接参数

<template>
    <div class="person">
        <h3>ID{{ id }}</h3>
        <h3>姓名:{{ name }}</h3>
        <h3>年龄:{{ age }}</h3>
    </div>
</template>

<script lang='ts' setup name="PersonCom">
defineProps(['id', 'name', 'age'])
</script>

(二)query对象方式:
去掉占位,返回route.query

// 创建1个路由器
const router = createRouter({
    // 路由器的工作模式
    history: createWebHistory(),
    /* 多个路由配置 */
    routes: [
        {
            name: 'ren',
            path: '/person',
            component: PersonVue,
            props(route){
                return route.query
            }
        }
    ]
});

传参:

<RouterLink :to="{
    path: '/person',
    query: {
      id: 1,
      name: '王大拿',
      age: 56
    }
}" active-class="active">
  person
</RouterLink>

接参:这里通过defineProps()接参数

<template>
    <div class="person">
        <h3>ID{{ id }}</h3>
        <h3>姓名:{{ name }}</h3>
        <h3>年龄:{{ age }}</h3>
    </div>
</template>

<script lang='ts' setup name="PersonCom">
defineProps(['id', 'name', 'age'])
</script>

效果都是一样的,浏览器地址不同:params是路径方式;query是参数拼接方式。
在这里插入图片描述

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/425123.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ相关问题

RabbitMQ相关问题 一、RabbitMQ的核心组件和工作原理&#xff1f;二、如何保证消息可靠投递不丢失的&#xff1f;三、RabbitMQ如何保证消息的幂等性&#xff1f;四、什么是死信队列&#xff1f;死信队列是如何导致的&#xff1f;五、RabbitMQ死信队列是如何导致的&#xff1f;六…

PDF 解析问题调研

说点真实的感受 &#xff1a;网上看啥组件都好&#xff0c;实际测&#xff0c;啥组件都不行。效果好的不开源收费&#xff0c;开源的效果不好。测试下来&#xff0c;发现把组件融合起来&#xff0c;还是能不花钱解决问题的&#xff0c;都是麻烦折腾一些。 这里分享了目前网上能…

数据结构 第3章 栈、队列和数组(一轮习题总结)

第3章 栈、队列和数组 3.1 栈3.2 队列3.3 栈与队列的应用3.4 数组和特殊矩阵 3.1 栈&#xff08;1 10 11 20&#xff09; 3.2 队列&#xff08;6 12 14 17&#xff09; 3.3 栈与队列的应用&#xff08;6 11&#xff09; 3.4 数组和特殊矩阵 3.1 栈 T1 栈和队列具有相同的逻辑…

一周学会Django5 Python Web开发-Django5详细视图DetailView

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计28条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

Linux-信号2

文章目录 前言一、信号是如何保存的&#xff1f;int sigemptyset(sigset_t *set);int sigfillset(sigset_t *set);int sigaddset (sigset_t *set, int signo);int sigdelset(sigset_t *set, int signo);int sigismember&#xff08;const sigset_t *set, int signo);int sigpen…

leetcode 长度最小的子数组

在本题中&#xff0c;我们可以知道&#xff0c;是要求数组中组成和为target的最小子数组的长度。所以&#xff0c;我们肯定可以想到用两层for循环进行遍历&#xff0c;然后枚举所有的结果进行挑选&#xff0c;但这样时间复杂度过高。 我们可以采用滑动窗口&#xff0c;其实就是…

NoSQL--1.虚拟机网络配置

目录 1.初识NoSQL 1.1 NoSQL之虚拟机网络配置 1.1.1 首先&#xff0c;导入预先配置好的NoSQL版本到VMware Workstation中 1.1.2 开启虚拟机操作&#xff1a; 1.1.2.1 点击开启虚拟机&#xff1a; 1.1.2.2 默认选择回车CentOS Linux&#xff08;3.10.0-1127.e17.x86_64) 7 …

同样是证书,NPDP和PMP有什么区别?

PMP和NPDP的区别是啥&#xff1f; PMP、NPDP证书考哪个更有用&#xff1f;还是两个都考&#xff1f; PMP和NPDP哪个更适合现在及以后发展&#xff1f; PMP和NPDP这两哪个含金量更高&#xff1f; 一&#xff0c;关于PMP和NPDP PMP和NPDP都是美国PMI/PDMA的专业考试&#xf…

C语言中的分支和循环语句:从入门到精通

分支和循环语句 1. 前言2. 预备知识2.1 getchar函数2.2 putchar函数2.3 计算数组的元素个数2.4 清屏2.5 程序的暂停2.6 字符串的比较 3. 结构化3.1 顺序结构3.2 分支结构3.3 循环结构 4. 真假性5. 分支语句&#xff08;选择结构&#xff09;5.1 if语句5.1.1 语法形式5.1.2 else…

Stable Cascade又升级了,现在只需要两个模型

Stable Cascade这个模型&#xff0c;大家如果还有印象的话&#xff0c;是需要下载三个模型的&#xff0c;分别是Stage_a,Stage_b和Stage_c,如果全都下载下来&#xff0c;需要20多个G&#xff0c;但是最近使用ComfyUI做尝试的时候&#xff0c;发现官方的案例中已经没有用到单独的…

数据审计 -本福德定律 Benford‘s law (sample database classicmodels _No.6)

数据审计 -本福德定律 Benford’s law 准备工作&#xff0c;可以去下载 classicmodels 数据库资源如下 [ 点击&#xff1a;classicmodels] 也可以去我的博客资源下载 文章目录 数据审计 -本福德定律 Benfords law 前言一、什么是 本福德定律&#xff1f;二、数学公式三、应用…

单细胞Seurat - 降维与细胞标记(4)

本系列持续更新Seurat单细胞分析教程&#xff0c;欢迎关注&#xff01; 非线形降维 Seurat 提供了几种非线性降维技术&#xff0c;例如 tSNE 和 UMAP&#xff0c;来可视化和探索这些数据集。这些算法的目标是学习数据集中的底层结构&#xff0c;以便将相似的细胞放在低维空间中…

Grpc项目集成到java方式调用实践

背景&#xff1a;由于项目要对接到grcp 的框架&#xff0c;然后需要对接老外的东西&#xff0c;还有签名和证书刚开始没有接触其实有点懵逼。 gRPC 是由 Google 开发的高性能、开源的远程过程调用&#xff08;RPC&#xff09;框架。它建立在 HTTP/2 协议之上&#xff0c;使用 …

从零开始手写RPC框架(3)——ZooKeeper入门

目录 ZooKeeper简介ZooKeeper中的一些概念 ZooKeeper安装与常用命令常用命令 ZooKeeper Java客户端 Curator入门 ZooKeeper简介 是什么&#xff1f; ZooKeeper 是一个开源的分布式协调服务&#xff0c;本身就是一个分布式程序&#xff08;只要半数以上节点存活&#xff0c;Zo…

django-admin登录窗口添加验证码功能-(替换原有的login.html)captcha插件

需求&#xff1a; 1&#xff1a;更改django框架的admin登录窗口标题 2&#xff1a;在admin登录窗口中添加验证码功能 3&#xff1a;验证码允许点击更换 步骤如下&#xff1a; 1:安装插件以及在安装列表中添加插件 2:自定义表单forms.py 3:创建login.html文件(复制django内置的l…

中国电子学会2020年6月份青少年软件编程Sc ratch图形化等级考试试卷四级真题。

第 1 题 【 单选题 】 1.执行下面程序&#xff0c;输入4和7后&#xff0c;角色说出的内容是&#xff1f; A&#xff1a;4&#xff0c;7 B&#xff1a;7&#xff0c;7 C&#xff1a;7&#xff0c;4 D&#xff1a;4&#xff0c;4 2.执行下面程序&#xff0c;输出是&#xff…

备战蓝桥杯Day22 - 计数排序

计数排序问题描述 对列表进行排序&#xff0c;已知列表中的数范围都在0-100之间。设计时间复杂度为O(n)的算法。 比如列表中有一串数字&#xff0c;2 5 3 1 6 3 2 1 &#xff0c;需要将他们按照从小到大的次序排列&#xff0c;得到1 1 2 2 3 3 5 6 的结果。那么此时计数排序是…

每天一道leetcode:14.最长公共前缀(简单)

⭐今日份题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例1 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl" 示例2 输入&#…

制作镜像与配置推送阿里云仓库

一、制作jdk镜像 1.1、Alpine linux简介 Alpine Linux是一个轻量级的Linux发行版&#xff0c;专注于安全、简洁和高效。它采用了musl libc和BusyBox&#xff0c;使得系统资源占用较少&#xff0c;启动速度较快。 Alpine Linux也提供了一个简单的包管理工具APK&#xff0c;(注…