Vue3-34-路由-路由配置参数 props

news/2024/7/21 18:57:48 标签: vue3, 路由, 路由传参, props

说明

路由的路径中可以携带参数,
形式如 :/a/:pname ,这个:表示这是个参数,pname :表示 参数名称。
在组件中,可以通过 当前路由对象params 属性来获取到这个参数,
当前路由对象 可以通过 useRoute() API 来获取到。

 基本的代码如下 :
   import { useRoute} from 'vue-router';
   const currentRoute = useRoute()
   // 获取对应的路径参数
   console.log(currentRoute.params.pname)

props : 的作用就是 简化上述的流程,
可以 通过 【props】的方式,将 路由中的参数直接注入到组件中,这样就可以直接使用了。

props__16">props 的三种使用方式

1、props 设置为 true ,直接传参;
2、传递对象;
3、通过函数的方式返回一个对象。

方式一 :直接传值

1、将 路由配置中的 props 设置为 true;
2、在组件中 通过 defineProps() 定义与路径参数同名的属性;
3、在组件中可以直接使用该参数了。

路由配置

// 导入 定义路由的两个方法
import {createRouter,createWebHistory}  from 'vue-router'

// 引入组件
import componentC from "./componentC.vue";

// 声明路由跳转的路径与组件的对应关系
const routsList = [
    {
        path:'/c100/:cname',
        component:componentC,
        props:true
    }
]

// 创建路由的实例对象
const routerConfigObj = createRouter({
    history:createWebHistory('abc'), // 带一个参数,表示是路由的一个前缀
    routes:routsList // 指定路由的配置列表
})

// 导出路由的对象
export default routerConfigObj;

》组件内容

<template>
    <div class="divb">
        这是组件C  : {{ cname }}
        <br>
    </div>
</template>

<script setup lang="ts">

    // 引入路由相关的 API
    import { useRoute} from 'vue-router';
    
    // 声明 当前路由对象
    const currentRoute = useRoute()

    // 打印一下路由实例对象 和 当前路由对象
    console.log('C 组件 中 当前路由对象 :',currentRoute)

    // 获取参数对象
    const props = defineProps(['cname'])
    console.log('通过路由获取到的参数 :',props.cname)

</script>

<style scoped>
    .divb{
        width: 200px;
        height: 100px;
        background: rgb(23, 177, 182);
    }
</style>

》运行效果
在这里插入图片描述

方式二 :传递对象

这种方式 适合 在路由中携带 静态参数的传参。

1、将 路由配置中的 props 设置为 一个对象;
2、在组件中 通过 defineProps() 定义与 路由配置中的 props 对象的属性同名的属性;
3、在组件中可以直接使用该参数了。

路由配置

// 导入 定义路由的两个方法
import {createRouter,createWebHistory}  from 'vue-router'

// 引入组件
import componentC from "./componentC.vue";

// 声明路由跳转的路径与组件的对应关系
const routsList = [

    {
        path:'/c200',
        component:componentC,
        props:{cname:'大家好'}
    }
]

// 创建路由的实例对象
const routerConfigObj = createRouter({
    history:createWebHistory('abc'), // 带一个参数,表示是路由的一个前缀
    routes:routsList // 指定路由的配置列表
})

// 导出路由的对象
export default routerConfigObj;

》组件内容

<template>
    <div class="divb">
        这是组件C  : {{ cname }}
        <br>
    </div>
</template>

<script setup lang="ts">

    // 引入路由相关的 API
    import { useRoute} from 'vue-router';
    
    // 声明 当前路由对象
    const currentRoute = useRoute()

    // 打印一下路由实例对象 和 当前路由对象
    console.log('C 组件 中 当前路由对象 :',currentRoute)

    // 获取参数对象
    const props = defineProps(['cname'])
    console.log('通过路由获取到的参数 :',props.cname)

</script>

<style scoped>
    .divb{
        width: 200px;
        height: 100px;
        background: rgb(23, 177, 182);
    }
</style>

》运行效果
在这里插入图片描述

props_166">方式三 :函数的方式返回props对象

1、将 路由配置中的 props 设置为 一个对象
2、在组件中 通过 defineProps() 定义与 路由配置中的 props 对象的属性同名的属性;
3、在组件中可以直接使用该参数了。

路由配置

// 导入 定义路由的两个方法
import {createRouter,createWebHistory}  from 'vue-router'

// 引入组件
import componentC from "./componentC.vue";

// 声明路由跳转的路径与组件的对应关系
const routsList = [
    {
        path:'/c300',
        component:componentC,
        props:(route:any) => {
            console.log('props 路由中的 参数route :',route)
            return {cname:'通过函数的方式返回 props 对象'}
        }
    },

]

// 创建路由的实例对象
const routerConfigObj = createRouter({
    history:createWebHistory('abc'), // 带一个参数,表示是路由的一个前缀
    routes:routsList // 指定路由的配置列表
})

// 导出路由的对象
export default routerConfigObj;

》组件内容

<template>
    <div class="divb">
        这是组件C  : {{ cname }}
        <br>
    </div>
</template>

<script setup lang="ts">

    // 引入路由相关的 API
    import { useRoute} from 'vue-router';
    
    // 声明 当前路由对象
    const currentRoute = useRoute()

    // 打印一下路由实例对象 和 当前路由对象
    console.log('C 组件 中 当前路由对象 :',currentRoute)

    // 获取参数对象
    const props = defineProps(['cname'])
    console.log('通过路由获取到的参数 :',props.cname)

</script>

<style scoped>
    .divb{
        width: 200px;
        height: 100px;
        background: rgb(23, 177, 182);
    }
</style>

》运行效果

在这里插入图片描述


http://www.niftyadmin.cn/n/5302689.html

相关文章

【Pytorch】学习记录分享9——新闻数据集文本分类任务实战

【Pytorch】学习记录分享9——PyTorch新闻数据集文本分类任务 1. 认为主流程code2. NLP 对话和预测基本均属于分类任务详细见3. Tensorborad 1. 认为主流程code import time import torch import numpy as np from train_eval import train, init_network from importlib impo…

ElasticSearch数据同步

文章目录 ElasticSearch数据同步1. 同步调用2. 异步通知3. 监听binlog4. 工作中处理同步的问题 ElasticSearch数据同步 ElasticSearch中酒店数据来自于mysql数据库&#xff0c;因此MySQL数据发生改变时&#xff0c;ElasticSearch也必须跟着改变&#xff0c;这个就是ElasticSear…

Word2Vector介绍

Word2Vector 2013 word2vec也叫word embeddings&#xff0c;中文名“词向量”&#xff0c;google开源的一款用于词向量计算的工具&#xff0c;作用就是将自然语言中的字词转为计算机可以理解的稠密向量。在word2vec出现之前&#xff0c;自然语言处理经常把字词转为离散的单独的…

金和OA jc6 ntko-upload 任意文件上传漏洞

产品简介 金和网络是专业信息化服务商&#xff0c;为城市监管部门提供了互联网监管解决方案&#xff0c;为企事业单位提供组织协同OA系统升开发平台&#xff0c;电子政务一体化平台智慧电商平合等服务 漏洞概述 金和OA jc6系统ntkoUpload接口处存在任意文件上传漏洞&#xf…

从第一步开始

从新建文件到开始写代码 新建文件 创建项目步骤 选择C++ 选择存放路径,给项目起个名字 最后选择编译器 进入写代码环节 写代码 #include <iostream>using

【数据库原理】(5)关系数据库的关系数据结构

关系及相关概念 在关系模型中,无论是实体还是实体之间的联系均由关系(二维表)来表示。 1.域&#xff08;Domain&#xff09; 定义&#xff1a;域是一组具有相同数据类型的值的集合。例子&#xff1a;实数集合、整数集合、英文字母集合等。 2.笛卡儿积&#xff08;Cartesian…

解析启动页设计的三种常见形式!

在日常生活中&#xff0c;当我们打开应用程序时&#xff0c;我们总是跳出很多页面&#xff0c;有些人说这是一个启动页面&#xff0c;有些人认为这是一个启动页面&#xff0c;有各种各样的名字。那么&#xff0c;当我们启动应用程序时&#xff0c;我们看到的页面的专业术语是什…

JVM面试系列-02

1. GC是什么&#xff1f;为什么要有GC&#xff1f; GC是垃圾收集的意思&#xff08;Gabage Collection&#xff09;&#xff0c;内存处理是编程人员容易出现问题的地方&#xff0c;忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃&#xff0c;Java提供的GC功能可以自…