Vue 3 中,组件间传值有多种方式
在 Vue 3 中,组件间传值有多种方式,以下是几种常见的方式
- 父组件向子组件传值(通过 props):
- 以下是几个父组件向子组件传值的示例:
- 示例 1:传递字符串
- 示例 2:传递数字
- 示例 3:传递对象
- 示例 4:传递数组
- 示例 5:传递布尔值
- 子组件向父组件传值(通过自定义事件):
- 子组件使用 v-model 向父组件传值的示例代码:
- 通过 provide 和 inject:
- 在父组件和子组件中使用:
父组件向子组件传值(通过 props):
<!-- 父组件 -->
<template><ChildComponent :message="parentMessage" />
</template><script setup>
import ChildComponent from './ChildComponent.vue';
const parentMessage = '这是来自父组件的值';
</script><!-- 子组件 -->
<template><div>{{ message }}</div>
</template><script setup>
defineProps(['message']);
</script>
以下是几个父组件向子组件传值的示例:
示例 1:传递字符串
父组件:
<template><ChildComponent :message="messageFromParent" />
</template><script setup>
import ChildComponent from './ChildComponent.vue';
const messageFromParent = '这是来自父组件的消息';
</script>
子组件:
<template><div>{{ message }}</div>
</template><script setup>
defineProps(['message']);
</script>
示例 2:传递数字
父组件:
<template><ChildComponent :count="5" />
</template><script setup>
import ChildComponent from './ChildComponent.vue';
</script>
子组件:
<template><div>接收到的数字: {{ count }}</div>
</template><script setup>
defineProps(['count']);
</script>
示例 3:传递对象
父组件:
<template><ChildComponent :userInfo="{ name: '张三', age: 25 }" />
</template><script setup>
import ChildComponent from './ChildComponent.vue';
</script>
子组件:
<template><div>用户信息: {{ userInfo.name }}, {{ userInfo.age }}</div>
</template><script setup>
defineProps(['userInfo']);
</script>
示例 4:传递数组
父组件:
<template><ChildComponent :fruits="['苹果', '香蕉', '橙子']" />
</template><script setup>
import ChildComponent from './ChildComponent.vue';
</script>
子组件:
<template><div>水果列表: <ul><li v-for="fruit in fruits" :key="fruit">{{ fruit }}</li></ul></div>
</template><script setup>
defineProps(['fruits']);
</script>
示例 5:传递布尔值
父组件:
<template><ChildComponent :isActive="true" />
</template><script setup>
import ChildComponent from './ChildComponent.vue';
</script>
子组件:
<template><div v-if="isActive">当前状态为活跃</div><div v-else>当前状态为不活跃</div>
</template><script setup>
defineProps(['isActive']);
</script>
子组件向父组件传值(通过自定义事件):
<!-- 父组件 -->
<template><ChildComponent @childEvent="handleChildEvent" />
</template><script setup>
import ChildComponent from './ChildComponent.vue';function handleChildEvent(valueFromChild) {console.log('从子组件接收到的值:', valueFromChild);
}
</script><!-- 子组件 -->
<template><button @click="emitEvent">向父组件传值</button>
</template><script setup>
defineEmits(['childEvent']);function emitEvent() {const valueToSend = '这是来自子组件的值';emit('childEvent', valueToSend);
}
</script>
子组件使用 v-model 向父组件传值的示例代码:
父组件:
html
复制
父组件接收到的值: {{ inputValue }}
子组件:
html
复制
<input type=“text” :value=“value” @input=“$emit(‘update:value’, $event.target.value)” />
在上述示例中,父组件通过 v-model:value=“inputValue” 将 inputValue 与子组件进行绑定。子组件中的输入框的值通过 :value=“value” 与父组件传来的值进行关联,当输入框的值发生变化时,通过 @input=“$emit(‘update:value’, $event.target.value)” 触发 update:value 事件并将新的值传递给父组件,从而实现子组件向父组件传值。
通过 provide 和 inject:
<!-- 父组件 -->
<template><ChildComponent />
</template><script setup>
import { provide } from 'vue';provide('sharedValue', '这是共享的值');
</script><!-- 子组件 -->
<template><div>{{ sharedValue }}</div>
</template><script setup>
import { inject } from 'vue';const sharedValue = inject('sharedValue');
</script>
使用 Vuex 状态管理:
首先安装 vuex :npm install vuex@next --save
创建一个 store.js 文件:
import { createStore } from 'vuex';export default createStore({state: {commonValue: '这是全局的值',},mutations: {updateCommonValue(state, newValue) {state.commonValue = newValue;}},actions: {},getters: {}
});
在父组件和子组件中使用:
<!-- 父组件或子组件 -->
<template><div>{{ $store.state.commonValue }}</div>
</template><script setup>
import { useStore } from 'vuex';const store = useStore();function updateValue() {store.commit('updateCommonValue', '新的值');
}
</script>
这些是 Vue 3 中常见的组件间传值方式,您可以根据具体的项目需求选择合适的方法。
相关文章:
Vue 3 中,组件间传值有多种方式
在 Vue 3 中,组件间传值有多种方式,以下是几种常见的方式 父组件向子组件传值(通过 props):以下是几个父组件向子组件传值的示例:示例 1:传递字符串示例 2:传递数字示例 3࿱…...
前置(3):npm 和npx异同点
npm(Node Package Manager)和npx(Node Package Execute)是两个密切相关但用途不同的命令行工具,它们都是Node.js生态系统中的重要组成部分。 npm 用途:npm是Node.js的包管理器,主要用于安装、…...

笔记(day17)集合概述、List、Set、比较器
集合Collection 一.概述 集合可以理解为数据结构的封装,根据不同的特性及操作性能进行分类 二.继承体系 三.Collection中常用方法 collection是集合中的父类,所以collection中的方法是所有集合中都有的 集合中只能保存引用类型(Object),无法保存基本类型 Colle…...
C语言从头学45——I/O函数(二)
本文继续学习I/O函数,并延续前文的编号。 (三)、sscanf() 函数 sscanf() 函数与scanf() 有些相似,不同之处sscanf() 是从已有的字符串里面获取数据;这个函数也是定义在stdio.h中。 功能:处理已经输入到计算机中的字…...

Python爬虫——爬取bilibili中的视频
爬取bilibili中的视频 本次爬取,还是运用的是requests方法 首先进入bilibili官网中,选取你想要爬取的视频,进入视频播放页面,按F12,将网络中的名称栏向上拉找到第一个并点击,可以在标头中,找到…...

为什么企业电销要用外呼系统
电销要使用外呼系统的原因主要有以下几点: 一、提升工作效率 * **自动拨号**:外呼系统能够自动拨打客户电话,减少电销人员手动拨号的时间,让他们将更多精力集中在与客户的沟通和交流上。 * **数据记录与管理**:系统能…...

Keepalived + Nginx 主备容灾方案介绍
Keepalived Nginx 主备容灾方案介绍 *服务器**IP地址**角色*Srv01192.168.249.100 VIP: 192.168.249.110NginxKeepaliveSrv02192.168.249.101NginxKeepalive 概述 Keepalived 和 Nginx 的组合是一个常见的高可用性(HA)方案,尤其适用于 Web…...

PHP、JavaScript代码审计工具
软件截图 1. GPT代码审计需要挂代理,和充值才可以使用 2. 全局搜索关键字 3. 危险函数搜索 4. 自动化代码审计 报告 下载地址 GitHub - yuag/Code-audit: 代码审计代码审计. Contribute to yuag/Code-audit development by creating an account on GitHub....

《向量数据库指南》——Ray Data+Anyscale解锁价值评估新篇章
在钧瓷这一古老而深邃的艺术领域中,每一位资深藏家与投资人都深知,随着市场的不断发展与扩大,信息的处理与分析能力对于精准判断、高效收藏与投资决策至关重要。尤其是当我们面对庞大的钧瓷数据库、复杂的交易记录、以及不断更新的市场趋势时,传统的数据处理方式往往显得力…...

知识改变命运 数据结构【杨辉三角(顺序表)】
杨辉三角 首先我们可以发现题目中返回类型是一个 这其实返回的类似与一个二维数组 我们大概分析下题目根据画图可知,我们可以把每一行的元素进行存储,然后再把每一行存储起来,然后就实现了题目 代码: public List<List<…...
Docker三剑客之Docker Engine
Docker Engine作为Docker的核心组件,其功能和重要性不言而喻。以下是对Docker Engine的详细介绍,内容涵盖其定义、核心组件、工作原理、配置方法、安全性以及最佳实践等多个方面,但由于篇幅限制,我将尽量在6000字以内概括性地介绍…...

【Qt】信号与槽(下)
目录 自定义信号 带参数的信号和槽 信号和槽存在的意义 信号与槽的连接方式 一对一 一对多 多对一 意义 信号和槽的其他说明 信号和槽的断开 使用Lambda表达式定义槽函数 信号与槽的优缺点 优点: 松散耦合 缺点: 效率较低 自定义信号 自定义槽函数是非常关键的&a…...

多模态大语言模型(MMLLM)的现状、发展和潜力
1、大模型 随着ChatGPT流行,大模型技术正逐渐成为AI领域的热点。许多行业大佬纷纷投身于这一赛道,展示了大模型的独特魅力和广阔前景。 王慧文,前美团联合创始人,发起“AI英雄帖”。 李志飞,出门问问创始人࿰…...

Linux中apache服务安装与mysql安装
目录 一、apache安装 二、MySQL安装 一、apache安装 准备环境:一台虚拟机、三个安装包(apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz、httpd-2.4.29.tar.bz2) 安装过程: tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz tar xf http…...
Sublime Text常用快捷键
1. 简介 1.1. 概述 Sublime Text是一个轻量级的文本编辑器,它具有快速的启动速度、易用性以及美观的界面。它支持多种编程语言,并且可以通过各种插件进行功能扩展。Sublime Text由程序员Jon Skinner于2008年1月份开发出来,最初被设计为一个具有丰富扩展功能的Vim。它具有漂…...

高危漏洞CVE-2024-38077的修复指南
“ 根据2024年8月9日,国家信息安全漏洞共享平台(CNVD)收录了Windows远程桌面许可服务远程代码执行漏洞(CNVD-2024-34918,对应CVE-2024-38077)。未经身份认证的攻击者可利用漏洞远程执行代码,获取服务器控制权限。目前,该漏洞的部分技术原理和概念验证伪代码已公开,厂商…...

docker基本管理和应用
docker是一个开源的应用容器引擎,基于go语言开发的 docker是运行在linux的容器化工具,可以理解为轻量级的虚拟机 可以在任何主机上,轻松创建的一个轻量级,可移植的,自给自足的容器 鲸鱼--------->宿主机 集装箱…...

AI招聘在人才盘活中的作用:开启智慧人力新篇章
一、引言:AI赋能招聘新纪元 在21世纪的今天,随着科技的飞速发展,人工智能(AI)已经渗透到社会经济的各个角落,其中,人力资源管理领域也不例外。AI技术的引入,不仅颠覆了传统的招聘模…...

探索SD NAND配套测试工具:工程师的得力助手
在快速发展的存储技术领域,SD NAND因其高速读写、低功耗和高可靠性而广受青睐。然而,对于工程师来说,验证SD NAND的性能并非易事,为了便于工程师验证,MK 米客方德开发设计了SD NAND配套测试工具。 一、SD NAND转接板简…...

三十六、【人工智能】【机器学习】【监督学习】- Bagging算法模型
系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...