vue3组件传值---vue组件通过属性,事件和provide,inject进行传值

news2024/11/19 9:28:21

通过属性传值(父传子)

        vue的组件具有props自建属性(自定义名称,类似于class,id的属性),通过这个属性,父组件可以向子组件传递参数,从而实现组件之间的信息传递,

在子组件(myComponent.vue)中设置

<script setup>//组合式API

//自建属性 父组件给子组件传值
const props = defineProps({
    title : String,
    num : Number
});
console.log(props.title,props.num);
</script>

这里设置了两个属性,一个title字符串值,一个num数字值,

在父组件(App.vue)中


<script setup>
import myComponent from './components/myCompenent.vue'
import { ref } from 'vue';
const num = ref(0);
</script>

<template>
    <myComponent  title="我的组件" :num= 'num'/>
</template>

注意num应该使用模板语法(v-bind:num或:num),否则num无法被识别为数字,而是默认为字符串

然后启动项目,可以在控制台上看到传递的参数

通过事件传值(子传父)

vue组件可以自建事件,由父组件监听,并接受参数,通过这个参数,父组件可以收到来自子组件的信息

在子组件(myComponent.vue)中设置

<script setup>//组合式API
import { ref } from 'vue';
// 响应式状态
const count = ref(0);

//自建事件 子组件向父组件传值
const emit = defineEmits(["changeNum"])

function add(){
    count.value++;
    emit("changeNum",count.value);//触发changeNum事件,传递count.value
}
</script>

<template>
    <button @click="add">count={{ count }}</button>
    <!-- 这里的count自动被浅层解包 即count=count.value -->
</template>

在父组件(App.vue)中

<script setup>
import { ref } from 'vue';
import myComponent from './components/myCompenent.vue'


const num = ref(0);
function changeNum(count) {
    console.log("子组件传递的值:",count);
}

</script>

<template>

 <myComponent  title="我的组件" :num= 'num' @changeNum="changeNum" />
  
</template>

        事件流程:每点击一次子组件中的按钮执行add函数,add函数会触发事件changeNum,使count自增,并传递出这个count,父组件中监听到事件changeNum,执行changeNum函数并接受子组件传递的值打印在控制台上

这样我们就完成了子组件向父组件传值

provide,inject传值(父传子)

vue3中新增了provide和inject方法,在上面两种方法中,只能在相邻的组件中传递信息,例如,A->B->C,A和C想要传递信息,就必须要通过B,而使用provide,inject传值的方式可以跳过B直接进行传递,不过这种方式只能由父组件传递给子组件

在子组件中(newComponent.vue)

<script setup>//组合式API
import { inject } from 'vue';
const msg = inject("msg");//接受信息

</script>


<template>

    <p>{{ msg }}</p>

</template>

在父组件中 (App.vue)

<script setup>
    import newComponent from './components/newComponent.vue'
    import { ref,provide } from 'vue';
    const msg = provide("msg","向子组件传递的信息");//只能有父组件向子组件传

</script>

<template>

    <newComponent/>

<template>

provide(key,value),有两个参数,一个是传递值的key(字符串),另一个是value(任意值)

inject(key),有一个参数,接收值的key(字符串)

它们都只能在setup函数或setup的script标签中使用,返回值都是响应式类型

关于响应式可以参考:

vue响应式API,ref和reactive的使用-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习】【机器学习】支持向量机,网络入侵检测,KDD数据集

文章目录 环境加载数据归一化数据训练模型用测试数据集给出评估指标准确率召回率预测某个输入数据随便取一行数据加载训练好的SVM支持向量机模型并预测 全部数据和代码下载 环境 之前介绍过用深度学习做入侵检测&#xff0c;这篇用向量机。 环境Python3.10 requirements.txt…

深度解析:短剧市场的发展趋势

一、 短剧视频的兴起 小程序短剧视频是近年来在社交媒体平台上崭露头角的一种内容形式&#xff0c;其独特的表达方式吸引了大量用户的关注&#xff0c;这种类型的视频通常以小幅度、短时长的剧情为主&#xff0c;具有轻松幽默的风格&#xff0c;适合在碎片化的时间作为娱乐消遣…

OpenFeign --学习笔记

什么是OpenFeign&#xff1f; OpenFeign可以想象成一座连接客户端&#xff08;服务器&#xff09;和服务器之间的桥梁。在微服务架构中&#xff0c;各个服务之间像小岛屿一样分布在网络上&#xff0c;它们需要相互通信才能协同工作。但是&#xff0c;这些岛屿之间并没有现成的…

el-dialog给弹框标题后加图标,鼠标悬停显示详细内容

效果&#xff1a; 代码&#xff1a; <div slot"title" class"el-dialog__title">标题<el-tooltip effect"dark" placement"right"><div slot"content">鼠标悬停显示</div><i class"el-icon…

AI绘画入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

AI绘画的出现&#xff0c;让越来越多的人可以轻松画出美丽的插画作品。在本篇文章中&#xff0c;我们将会使用AI绘画软件&#xff1a;触站&#xff0c;轻松创建属于自己的作品。从零开始学AI绘画&#xff01; 从零开始学AI绘画关键步骤&#xff1a; 第一步&#xff1a;下载软…

MatrixOne→MatrixOS:矩阵起源的创业史即将用“AI Infra”和“AI Platform”书写新章程

在数字化浪潮的推动下&#xff0c;MatrixOne的故事就像一部科技界的创业史诗&#xff0c;它始于一个简单而宏伟的梦想——构建一个能够支撑起新一代数字世界的操作系统。想象一下&#xff0c;在AIGC时代&#xff0c;数据流动如同“血液”&#xff0c;算法运转如同“心跳”&…

<microros> 如何自定义uROS2数据类型

如何自定义数据类型 在microros中&#xff0c;我们可以看到&#xff0c;官方给我们提供了很多数据类型。 如果我们在实际使用的时候&#xff0c;这些类型无法满足我们的传输要求怎么办呢&#xff1f; 官方也提供了自定义数据类型的办法。 参考&#xff1a; https://github…

深度学习的实用性探究:虚幻还是现实?

深度学习的实用性探究&#xff1a;虚幻还是现实&#xff1f; 深度学习作为人工智能领域的一个热点&#xff0c;已经在学术和工业界引起了广泛的关注。尽管深度学习技术显示出惊人的性能和潜力&#xff0c;但有时它们给人的感觉是“虚”的&#xff0c;或许是因为它们的抽象性和…

MySQL进阶——索引使用规则

在上篇文章我们学习了MySQL进阶——索引&#xff0c;这篇文章学习MySQL进阶——索引使用规则。 索引使用规则 在使用索引时&#xff0c;需要遵守一些使用规则&#xff0c;否则索引会部分失效或全部失效。 最左前缀法则 最左前缀法则是查询从索引的最左列开始&#xff0c;并…

C语言字符、数组指针变量

目录 一、字符指针变量 二、数组指针变量 a.数组指针变量是什么 b.数组指针变量的书写格式 c.数组指针变量如何初始化 d.二维数组传参的本质 一、字符指针变量 在指针的类型中我们知道有一种指针类型为字符指针 char* 。 其一般使用&#xff1a; int main() {char ch w…

解决:Navicat导入sql脚本时报2006

目录 问题复现原因分析解决办法问题小结 1) MySQL 服务宕了 2) mysql连接超时 3) mysql请求链接进程被主动kill 4) Your SQL statement was too large. 问题复现 今天在用Navicat 16.0.6导入.sql文件时&#xff0c;运行一半就报错了。错误如下&#xff1a; [E…

机器学习实验----支持向量机(SVM)实现二分类

目录 一、介绍 (1)解释算法 (2)数据集解释 二、算法实现和代码介绍 1.超平面 2.分类判别模型 3.点到超平面的距离 4.margin 间隔 5.拉格朗日乘数法KKT不等式 (1)介绍 (2)对偶问题 (3)惩罚参数 (4)求解 6.核函数解决非线性问题 7.SMO (1)更新w (2)更新b 三、代…

【机器学习数据挖掘】基于ARIMA 自回归积分滑动平均模型的销售价格库存分析报告 附完整python代码

资源地址&#xff1a;Python数据分析大作业 4000字 图文分析文档 销售分析 完整python代码 ​ 完整代码分析 同时销售量后1000的sku品类占比中&#xff08;不畅销产品&#xff09;如上&#xff0c;精品类产品占比第一&#xff0c;达到66.7%&#xff0c;其次是香化类产品&#…

别人状告你怎么办?你知道还可反告吗?

别人状告你怎么办&#xff1f;你知道还可反告吗&#xff1f; --李秘书讲写作&#xff1a;关于反诉状的写作技巧与策略 反诉状是民事诉讼中的一种重要法律文书&#xff0c;它允许被告在原告提起诉讼后&#xff0c;对原告提起反诉&#xff0c;以抵消原告的诉讼请求。李秘书这节…

视频会议开发:为什么必须使用显卡GPU解码渲染视频?

现在&#xff0c;使用视频会议系统远程协同办公、沟通交流&#xff0c;已经非常普遍了。如果我们要开发自己的视频会议系统&#xff0c;那么&#xff0c;GPU解码渲染技术是不可缺少的。 在视频会议系统中&#xff0c;经常需要同时观看会议中多个参会人员的视频图像&#xff0c;…

Ant Design Pro

一&#xff1a;Ant Design pro是什么&#xff1a; Ant Design Pro 是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案&#xff0c;致力于在设计规范和基础组件的基础上&#xff0c;继续向上构建&#xff0c;提炼出典型模板/业务组件/配套设计资源&#x…

【js】input设置focus()不生效

实现功能&#xff1a;点击添加文章标签的时候&#xff0c;输入框聚焦。 页面上&#xff0c;input输入框默认不显示&#xff0c;是display:none; 点击添加按钮后&#xff0c;input输入框才显示。 在js里面直接获取元素进行设置聚焦不成功 。 ∵ focus方法比show方法先执行。j…

【MySQL】MySQL Connect -- 详解

一、Connector / C 使用 要使用 C 语言连接 MySQL&#xff0c;需要使用 MySQL 官网提供的库&#xff0c;可以去官网进行下载&#xff1a;MySQL :: MySQL Community Downloads 我们使用 C 接口库来进行连接&#xff0c;要正确使用&#xff0c;还需要做一些准备工作&#xff1a…

从军事角度理解“战略与战术”

战略与战术&#xff0c;均源于军事术语。 战略&#xff08;Strategy&#xff09;&#xff0c;源自希腊语词汇“strategos&#xff08;将军&#xff09;”和“strategia&#xff08;军事指挥部&#xff0c;即将军的办公室和技能&#xff09;”。指的是指挥全局性作战规划的谋略…

如何知道ZIP压缩包解压密码?有哪些解密策略?

我们在生活当中&#xff0c;经常会遇到ZIP压缩包&#xff0c;它们以其高效的文件压缩和方便的传输特性而受到广泛欢迎。然而&#xff0c;有时我们可能会遇到一些带有密码保护的ZIP文件&#xff0c;这时就需要知道解压密码才能访问其中的内容。本文将探讨如何知道ZIP压缩包的解压…