VUE3 学习笔记(8):VUE 组件间传值【父传子、子传父】

父传子值

可以在父组件使用中增加:命名,子组件中通过props:["命名"] 接收的方式进行处理。

支持多种类型,当然也支持传对象、函数、HTML内容(后面讲的插槽),也可以通过provide进行跨级透传

props逐级传参示例

示例

父组件(容器) app.vue

<!--内容控制-->
<template>传值<test :num="100" :names="names" :msg="msg"/>
</template>
<!--JS 控制-->
<script>import test from "@/components/test.vue";export default {components: {test},data() {return {msg: '测试一下',names:["张三","李四","王五"],user:{name:'张三',age:18}}}}</script>

子组件 test.vue

<template><p>接收到: {{msg}}</p><p>{{num}}</p><p v-for="(item,index) in names" :key="index">{{item}}</p>
</template><script >export default {props:["msg","num","names"]}
</script>

有时我们需要给传的值类型进行约束,在接收时可以进行配置

子组件 test.vue

<template><p>接收到: {{msg}}</p><p>{{num}}</p><p v-for="(item,index) in names" :key="index">{{item}}</p>
</template><script >export default {props: {msg: {type: String,default: 'hello world'},num: {type: Number,default: 0},names: {type: Array,default: () => {return ['1','2','3']}}}}
</script>

provide、inject透传示例

试想一下,A下面有子组件B,而B组件下又有C组件,C组件下又有D组件;如果使用Props传的话太麻烦了,所以就有了透传。

父 app.vue

<!--内容控制-->
<template><A></A></template>
<!--JS 控制-->
<script>import A from "@/components/A.vue";export default {components: {A},data() {return {name: '李四',age: 100,act: "test2"}},provide() {return {name: this.name,age: this.age,act: this.act}}}
</script>

子A.vue

<template><B></B>
</template><script>
import B from "@/components/B.vue"
export default {components: {B}
}</script>

孙B.vue

<template><p>{{name}}</p><p>{{PName}}</p>
</template><script>
export default {data() {return {PName: this.name,age: this.age,act: this.act}},inject: ['name', 'age', 'act'],
}</script>

子传父值

在实际应用中我们需要把子组件的操作反馈给父组件进行响应,例如 列表中通过点击新增调出子组件新增功能,当子组件新增完成后需要对父组件的内容刷新,否则的话就不是一个完整的功能页面。

具体做法就是在子组件上通过自定义事件(自定义函数)的this.$emit(父组件函数名,传的值)进行实现,也可以通过props 通过传函数,子组件定义接收类型为函数的方式实现父传子。

this.$emit 示例

  父组件 App.vue

<!--内容控制-->
<template><p>子组件传过来的数据</p><test @getData="getData"></test><p>{{name}}</p><p>{{age}}</p>
</template>
<!--JS 控制-->
<script>import test from "@/components/test.vue";export default {components: {test},data() {return {name: '李四',age: 100}},methods: {getData(data) {this.name = data.name;this.age = data.age;}}}
</script>

  子组件 test.vue

<template><button @click="sendData">传递数据到父组件</button>
</template><script >export default {methods:{sendData(){this.$emit('getData',{name:'张三',age:18})}}}
</script>

Props 传函数实现

 父组件 App.vue

<!--内容控制-->
<template><test :name="name" :age="age" :OnFunction="getData"></test><p>子组件传过来的数据</p><p>{{name}}</p><p>{{age}}</p>
</template>
<!--JS 控制-->
<script>import test from "@/components/test.vue";export default {components: {test},data() {return {name: '李四',age: 100}},methods: {getData(data) {this.name = data.name;this.age = data.age;}}}
</script>

  子组件 test.vue

<template><div><p>测试子组件</p><div>姓名:{{name}}</div><div>年龄:{{age}}</div></div><button @click="OnFunction({name:'王五',age:99})">传递数据</button>
</template><script >export default {props:{ name:String,age:Number,OnFunction:Function }}
</script>

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

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

相关文章

【面试】谈谈常见的Java虚拟机有哪些

目录 1. HotSpot JVM2. OpenJ9 JVM3. GraalVM4. JRockit5. Exact VM6. Sun Classic VM7. KVM&#xff08;Kaffe Virtual Machine&#xff09; 1. HotSpot JVM 1.开发商&#xff1a;Oracle公司2.特点&#xff1a;是目前应用最广泛的Java虚拟机实现。它采用了即时编译&#xff0…

论文笔记 Explicit Visual Prompting for Low-Level Structure Segmentations

通俗地解释视觉中的prompt 在视觉中的“prompt”&#xff08;提示&#xff09;可以用一种比较通俗的方式来理解&#xff1a; 什么是视觉中的提示&#xff1f; 想象一下&#xff0c;你有一个已经接受过大量训练的超级助手&#xff08;类似于预训练的模型&#xff09;&#xf…

【IOT】OrangePi+HomeAssistant+Yolov5智能家居融合

前言 本文将以OrangePi AIpro为基础&#xff0c;在此基础构建HomeAssistant、YOLO目标检测实现智能家居更加灵活智能的场景实现。 表头表头设备OrangePi AIpro(8T)系统版本Ubuntu 22.04.4 LTSCPU4核64位处理器 AI处理器AI算力AI算力 8TOPS算力接口HDMI2、GPIO接口、Type-C、M.2…

Web前端与App前端:深入剖析两者的异同

Web前端与App前端&#xff1a;深入剖析两者的异同 在数字化时代&#xff0c;前端技术已成为连接用户与数字世界的桥梁。然而&#xff0c;当我们谈及前端时&#xff0c;往往会遇到两个相似的概念&#xff1a;Web前端和App前端。这两者是否完全相同&#xff0c;还是各有千秋&…

【YOLOv10】2024年5月最新的YOLO系列模型Yolov10(论文阅读笔记) + 完整创新点说明 + 总结

&#x1f680;&#x1f680;&#x1f680; YOLOv10: 实时端到端的目标检测。YOLOv10比最先进的YOLOv9延迟时间更低&#xff0c;测试结果可以与YOLOv9媲美&#xff0c;可能会成为YOLO系列模型部署的“新选择”。 官方论文地址&#xff1a;https://arxiv.org/pdf/2405.14458 官方…

python生成词云图

生成词云图的话需要先对数据进行分词处理 , 分词方法点击查看 import pandas as pd from collections import Counter from wordcloud import WordCloud import matplotlib.pyplot as plt# 假设您已经按照之前的步骤处理了数据&#xff0c;并且处理后的数据保存在comments_proc…

怎么更改图片格式?图片在线转格式的使用方法

现在很多的平台在上传图片的时候&#xff0c;都会有规定要求的大小、格式、尺寸&#xff0c;只有符合要求的图片才可以正常上传。在网上传图时想要快速的修改图片格式&#xff0c;比较简单的一个方法就是在使用在线图片格式转换的工具就能够快速处理&#xff0c;下面将图片转格…

关于微信小程序低功耗蓝牙ECharts实时刷新(涉及自定义缓冲区)

简单的蓝牙显示&#xff08;串口手动发数据测试&#xff09; 最近搞了这方面的东西&#xff0c;是刚刚开始接触微信小程序&#xff0c;因为是刚刚开始接触蓝牙设备&#xff0c;所以这篇文章适合既不熟悉小程序&#xff0c;又不熟悉蓝牙的新手看。 项目要求是获取到蓝牙传输过来…

在线思维导图编辑!3个AI思维导图生成软件推荐!

思维导图&#xff0c;一种以创新为驱动的视觉化思考工具&#xff0c;已经渗透到我们日常生活和工作的各个角落。当我们需要整理思绪、规划项目或者梳理信息时&#xff0c;思维导图总能提供极大的帮助。 近些年随着云服务等基础设施的完善&#xff0c;我们可以看到越来越多提供…

Spring Bean Map之舞

1. 引言 在Spring框架中&#xff0c;Bean的生命周期管理是其核心功能之一。当Spring容器启动时&#xff0c;它会根据配置信息&#xff08;如XML配置文件、注解等&#xff09;来创建和管理Bean实例。这些Bean实例默认会被放置在一个Map数据结构中&#xff0c;以便容器能够快速地…

ITIL4认证考试这么贵,还值得考证吗,有必要学吗?

从2023年4月1日开始&#xff0c;ITIL 4是Foundation认证将会捆绑OTM(Official Training Materials),这样在一次ITIL4的考试费中将会捆绑&#xff1a;试卷费电子教材书费监考费OTM费&#xff0c;每一种考试费都相较于2022年有涨幅&#xff0c;再加上PeopleCert收取的授权机构的授…

angular HTTP拦截器阻止请求继续进行并中断请求链

在Angular的HTTP拦截器中&#xff0c;如果你希望在特定条件下阻止请求继续进行并中断请求链&#xff0c;直接返回 false 实际上不会达到预期效果。Angular的HTTP拦截器期望拦截器方法 intercept 返回一个 Observable<HttpEvent<any>>。如果你想要中断请求&#xff…

[英语单词] meltdown 熔断

意思就是和保险丝一样&#xff0c;熔断之后&#xff0c;就出现了断点&#xff0c;断网之类的事情。 RFC 2914 3.1. Preventing congestion collapse. The Internet protocol architecture is based on a connectionless end-to-end packet service using the IP protocol. The …

视频监控业务平台LntonCVS国标GB28181视频平台智慧城市应用方案

随着科技的不断进步&#xff0c;尤其是人工智能技术的飞速发展&#xff0c;视频应用已经超越了传统的视频监控、视频会议、视频通话和视频指挥调度等基本功能。它们正在向更加多元化、灵活化、融合化和智能化的方向发展。因此&#xff0c;建立一个视频AI中台变得至关重要。 通过…

持续领跑教育科技,网易有道再发“子曰”教育大模型全新应用

5月29日&#xff0c;网易有道“子曰”教育大模型媒体交流会在北京举行。会上&#xff0c;网易有道分享了子曰教育大模型最新技术进展及三大AI创新应用&#xff1a;AI全科学习助手“有道小P”APP、新一代虚拟人口语教练Hi Echo 3.0和新一代知识库问答引擎QAnything。 现场&…

基于STM32单片机老人体温心率血氧跌倒定位短信报警

一.硬件及设计功能 以STM32F103C8T6为中央处理器&#xff0c;GPS模块用采集数据&#xff0c;将数据发送给单片机后&#xff0c;单片机根据定位计算公式得出当前位置的经纬度信息和时间信息。经过LCD显示器处理后得出和时间信息SIM800模块发送短信到设定的手机号上&#xff0c;将…

day22二叉树part08 | 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

**235. 二叉搜索树的最近公共祖先 ** 这里利用上了二叉搜索树的特性&#xff0c;从上到下遍历&#xff0c;最近的公共祖先一定是满足p->val < root->val < q->val的 class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, Tr…

关于vueX在项目中的使用

1.安装、导入、挂载 安装&#xff1a;npm install vuexnext --save main.js中挂载:import store from ./store app.use(store) 导入&#xff1a;import { createStore } from vuex;2.书写基本结构 export default createStore({state: {vehicleTypeList: [],//初始化定义需要…

17 C语言学生管理系统

学生管理系统 &#x1f44d;&#x1f602;&#x1f4af; 项目代码 代码可能存在细节上的错误&#xff0c;希望大家可以指导意见。 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_STUDENTS 100…

yolov8逐步分解(7)_模型训练初始设置之优化器Optimizer及学习率调度器Scheduler初始化

yolov8逐步分解(1)--默认参数&超参配置文件加载 yolov8逐步分解(2)_DetectionTrainer类初始化过程 yolov8逐步分解(3)_trainer训练之模型加载 YOLOV8逐步分解(4)_模型的构建过程 YOLOV8逐步分解(5)_模型训练初始设置之混合精度训练AMP YOLOV8逐步分解(6)_模型训练初始…