vue2中几种组件传值方法

1.父子组件传值

父组件在子组件标签中传入fatherMess,在子组件使用$emit,约定子传父事件名,将子组件的数据传递到父组件.通过按钮修改,可以发现,这里的传值是响应式的
步骤:

​ 1.在父组件中给子组件标签添加属性

​ 2.在子组件中使用props接受数据

​ 3.子组件中使用数据,可以直接访问

父组件代码

<template><div class="container"><div class="FaS"><div class="son">//将父组件值传入子组件<FaS @getSonMess="getSonMess" :fatherMess="fatherMess"></FaS></div><el-button size="mini" @click="FtoS">父传子</el-button></div></div>
</template>
<script>
//引入子组件
import FaS from './components/FaS.vue'
export default {//子组件注册components: {FaS},data () {return {fatherMess: 'hallo'}},created () {},computed: {},methods: {getSonMess (e) {this.fatherMess = econsole.log(e, 'son to father')},FtoS () {this.fatherMess = 'fatherMess'}}
}
</script>
<style lang='scss'  scoped>
.container {width: 100%;height: 100vh;
}.FaS {width: 100%;height: 200px;border: 1px solid black;background-color: gray;display: flex;
}.son{width: 500px;height: 200px;
}
</style>

子组件代码

<template><div class="container">{{ this.fatherMess }}//展示来自父组件的数据<el-button size="mini" @click="StoF">子传父</el-button></div>
</template>
<script>
export default {
//子组件接收父组件的值props: ['fatherMess'],data () {return {}},created () {},computed: {},methods: {StoF () {this.$emit('getSonMess', 'SonMess')}}
}
</script>
<style lang='scss'  scoped>
.container {width: 100%;height: 100% !important;background-color: pink;
}
</style>

props的类型校验和默认值

子组件接收父组件的传值,可以在props中用对象的方式对传递的数据进行校验和默认值设置

 props: {fatherMess:{type:String,//传值必须为字符串类型required:true,//fatherMess是必传值default:'hallo',//fatherMess如果传递为空,子组件默认接收为'hallo'validator(val){//对传入的值进行判断或者处理if(vla.length<1){//处理逻辑}}
},

除此之外,ref也可以实现父子双向通讯

父组件

<template><div class="container"><div class="FaS"><div class="son"><FaS ref="son"></FaS></div>{{ this.fatherMess }}<el-button size="mini" @click="FtoS">父传子</el-button></div></div>
</template>
<script>
import FaS from './components/FaS.vue'
export default {components: {FaS},data () {return {fatherMess: 'hallo'}},created () {},computed: {},methods: {FtoS () {this.$refs.son.mess = '父组件修改子组件的值'}}
}
</script>

子组件

<template><div class="container">{{ this.mess }}<el-button size="mini" @click="StoF">子传父</el-button></div>
</template>
<script>
export default {data () {return {mess: 666}},created () {},computed: {},methods: {StoF () {this.$emit('getSonMess', 'SonMess')this.$parent.fatherMess = '子组件修改父组件的值'}}
}
</script>

2.非父子组件传值

$Bus

需要在main.js中单独声明一个Vue实例

Vue.prototype.$Bus = new Vue()

传递

this.$Bus.$emit('mess', 66) // 第一个参数是事件名,第二个值是传递的数据

接收

this.$Bus.$on('mess', e => {console.log(e)})

注意

//注册的总线事件要在组件销毁时卸载,否则会多次挂载,造成触发一次但多个响应的情况beforeDestroy () {this.bus.$off('事件名', (e) => {console.log(e)})
}

3.后代组件传值

provide和inject传值不是响应式的,两种写法变成响应式的

箭头函数写法

爷组件
  data () {return {fatherMess: 'hallo'}},provide () {return {GtoSMess: () => this.fatherMess}},
孙组件
 computed: {SonMess () {return this.GtoSMess()}},

对象写法

爷组件
data() {return {obj: {name: "是是是"}}},provide: function() {return {// 传递一个对象obj: this.obj}},
孙组件
inject: ['obj'],
computed: {// 也可以不用计算属性重新定义objName() {return this.obj.name}}

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

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

相关文章

CVE-2024-0918 TEW-800MB RCE漏洞分析

漏洞描述 固件版本为1.0.1.0的TEW-800MB路由器存在命令注入漏洞。如果攻击者获得了web管理权限&#xff0c;他们可以将命令注入到httpd未知函数中的post请求参数DeviceURL中&#xff0c;从而获得shell权限。。 参考链接 TEW-800MB (notion.site)https://warp-desk-89d.notio…

Qt不规则可移动窗体的实现

实现: 可以借助不规则的位图来实现不规则窗体,并支持拖动和移动。下面分别是头文件和源文件 #ifndef SHAPEWIDGET_H #define SHAPEWIDGET_H#include <QWidget>class ShapeWidget : public QWidget {Q_OBJECTpublic:ShapeWidget(QWidget *parent = 0);~ShapeWidget(); …

【嵌入式学习】QT-Day2-Qt基础

1> 思维导图 https://lingjun.life/wiki/EmbeddedNote/20QT 2>登录界面优化 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff…

LWM(LargeWorldModel)大世界模型-可文字可图片可视频-多模态LargeWorld-详细安装记录

说明 Large World Model&#xff08;LWM&#xff09;是一个通用的大环境多模态自回归模型&#xff0c;它利用了一个技术名为RingAttention&#xff0c;通过在大型的多样化视频和图书数据集上的训练&#xff0c;实现了对语言、图像和视频的理解与生成能力。 在github上已有4.2k…

c++文件的打开、读写和关闭。缓冲区的使用和控制。

在C中&#xff0c;文件的打开、读写和关闭通常使用标准库中的文件流对象&#xff08;如std::ifstream用于输入文件&#xff0c;std::ofstream用于输出文件&#xff09;来完成。这些对象封装了与操作系统交互的底层细节&#xff0c;使得文件操作更为简单和安全。 以下是文件打开…

Spring Boot与Netty:构建高性能的网络应用

点击下载《Spring Boot与Netty&#xff1a;构建高性能的网络应用》 1. 前言 本文将详细探讨如何在Spring Boot应用中集成Netty&#xff0c;以构建高性能的网络应用。我们将首先了解Netty的原理和优势&#xff0c;然后介绍如何在Spring Boot项目中集成Netty&#xff0c;包括详…

编程笔记 Golang基础 016 数据类型:数字类型

编程笔记 Golang基础 016 数据类型&#xff1a;数字类型 1. 整数类型&#xff08;Integer Types&#xff09;a) 固定长度整数&#xff1a;b) 变长整数&#xff1a; 2. 浮点数类型&#xff08;Floating-Point Types&#xff09;3. 复数类型&#xff08;Complex Number Types&…

JAVA高并发——单例模式和不变模式

文章目录 1、探讨单例模式2、不变模式 由于并行程序设计比串行程序设计复杂得多&#xff0c;因此我强烈建议大家了解一些常见的设计方法。就好像练习武术&#xff0c;一招一式都是要经过学习的。如果自己胡乱打&#xff0c;效果不见得好。前人会总结一些武术套路&#xff0c;对…

体验LobeChat搭建私人聊天应用

LobeChat是什么 LobeChat 是开源的高性能聊天机器人框架&#xff0c;支持语音合成、多模态、可扩展的&#xff08;Function Call&#xff09;插件系统。支持一键免费部署私人 ChatGPT/LLM 网页应用程序。 地址&#xff1a;https://github.com/lobehub/lobe-chat 为什么要用Lobe…

2024年2月19日-2月25日(全面进行+收集免费虚幻商城资源)

试试周一到周五重点进行&#xff0c;周末抄写源码&#xff0c;周一晚上看书很快就在22&#xff1a;00睡着&#xff0c;早上可以看看视频教程&#xff0c;出租车上补觉。 执行如下&#xff1a; 周一&#xff1a; 8&#xff1a;01-9&#xff1a;20ue4 rpg&#xff08;184&#xf…

深入探索C/C++预处理世界:预定义符号与宏定义的全方位指南

引言 在C/C编程中&#xff0c;预处理器是源代码转换为可编译形式的重要阶段。预处理器指令提供了诸如宏定义、条件编译、头文件包含等多种功能&#xff0c;极大地增强了代码的灵活性和可维护性。本篇博客将逐一探讨预处理的关键概念&#xff0c;从预定义符号到宏函数&#xff…

OpenAI Sora引领AI跳舞视频新浪潮:字节跳动发布创新舞蹈视频生成框架

OpenAI的Sora已经引起广泛关注&#xff0c;预计今年AI跳舞视频将在抖音平台上大放异彩。下面将为您详细介绍一款字节跳动发布的AI视频动画框架。 技术定位&#xff1a;这款框架采用先进的diffusion技术&#xff0c;专注于生成人类舞蹈视频。它不仅能够实现人体动作和表情的迁移…

Linux系统安装KafKa

Linux安装KafKa ​ 官方下载地址&#xff1a;Apache Kafka ​ 解压安装包 tar -zxvf kafka_2.12-3.3.2.tgz​ 修改配置文件 vim server.properties# broker 的全局唯一编号,不能重复,只能是数字 broker.id0 # kafka 运行日志(数据)存放的路径,路径不需要提前创建,kafka 自动…

2.21学习总结

1.【模板】ST 表 2.Balanced Lineup G 3.景区导游 4.最近公共祖先&#xff08;LCA&#xff09; 倍增思想&#xff1a;主要用于LCA问题&#xff0c;RMQ问题。在进行 递推 时&#xff0c;如果 状态空间很大&#xff0c;通常的 线性递推 无法满足 时间 与 空间复杂度 的要求&…

Chrome浏览器安装Axure-Chrome-Extension插件

Chrome浏览器打开Axure生成的HTML静态文件页面时&#xff0c;会显示如下图AXURE RP EXTENSION FOR CHROME&#xff0c;这是因为Chrome浏览器没有安装Axure插件Axure-Chrome-Extension导致的。 解决方法&#xff1a; 插件下载地址&#xff1a;https://download.csdn.net/downlo…

FreeRTOS 探秘之路(目录)

文章目录 前言一、FreeRTOS 快速入门二、FreeRTOS 深入学习 前言 一、FreeRTOS 快速入门 一&#xff0c;STM32cubeMX配置FreeRTOS工程 二&#xff0c;STM32cubeMX配置FreeRTOS---- 任务管理 三&#xff0c;STM32cubeMX配置FreeRTOS---- 互斥量 四&#xff0c;STM32cubeMX配…

通过盲注脚本复习sqllabs第46关order by 注入

在MySQL支持使用ORDER BY语句对查询结果集进行排序处理&#xff0c;使用ORDER BY语句不仅支持对单列数据的排序&#xff0c;还支持对数据表中多列数据的排序。语法格式如下 select * from 表名 order by 列名(或者数字) asc&#xff1b;升序(默认升序) select * from 表名 or…

交换瓶子【第七届】【省赛】【A组】

题目描述 有N个瓶子&#xff0c;编号 1 ~ N&#xff0c;放在架子上。 比如有5个瓶子&#xff1a; 2 1 3 5 4 要求每次拿起2个瓶子&#xff0c;交换它们的位置。 经过若干次后&#xff0c;使得瓶子的序号为&#xff1a; 1 2 3 4 5 对于这么简单的情况&#xff0c;显然&#…

Java练习(第3天)使用StringJoiner类进行字符串连接

一、问题描述 给定2个或多个字符串&#xff0c;将其连接成为一个字符串&#xff0c;并输出连接后字符串的长度。字符串之间用逗号或引号分隔。 样例输入1&#xff1a; Ram Shyam 样例输出1&#xff1a; Ram,Shyam 9 样例输入2&#xff08;要求接在输出1之后&#xff09;:…

每天一个数据分析题(一百六十四)

关于OLAP系统&#xff0c;下列选项不正确的是&#xff08;&#xff09; A. 是基于数据仓库的信息进行分析处理过程 B. 用户数量相对较少&#xff0c;其用户主要是业务决策人员与管理人员 C. 对响应时间要求非常高。 D. 基础数据来源于生产系统的操作数据&#xff0c;也就是…