Vue3的组件如何通讯
一、defineProps,defineEmits
子组件nameChange.vue
<template><div class="title">姓:{{ firstName }}</div><div>名:{{ lastName }}</div>{{ name }}<button @click="clickTap">传参</button>
</template><script setup lang="ts">
import { Ref } from 'vue';type props = {firstName: string,lastName: string
}
const prop = withDefaults(defineProps<props>(), {firstName: 'c',lastName: 'qs'
})const emit = defineEmits<{(e: "on-click", name: props): void
}>()const clickTap = () => {emit('on-click', prop);
}
</script>
<style></style>
父组件
<template><nameChange @on-click="getName" first-name="c" last-name="qs"></nameChange>
</template>
<script setup lang="ts">
import { reactive } from 'vue';
type props = {firstName: string,lastName: string
}
let names = reactive<props>({firstName: '1',lastName: '2'
});
import nameChange from "./components/nameChange.vue";const getName = (data: props) => {names.firstName = data.firstName;names.lastName = data.lastName;
}
</script>
二、provide,inject
//注入依赖
const colorName = ref<string>('#fff449')
provide('colorName', colorName)//获取依赖
const color = inject<Ref<string>>('colorName');
color!.value = 'blue';
三、defineExpose
子组件暴露数据
<script setup lang="ts">
defineExpose({name: 'cqs'
})
</script>
父组件通过ref获取
<template><nameChange ref="refName"></nameChange>
</template>
<script setup lang="ts">
import nameChange from "./components/nameChange.vue";const refName = ref<InstanceType<typeof nameChange>>()
onMounted(() => {console.log(refName.value);
})</script>
四、mitt
通过插件mitt,相当于vue2的bus总线
注册
import { createApp } from 'vue'
import App from './App.vue'
import mitt from 'mitt'const Mitt = mitt();const app = createApp(App)app.config.globalProperties.$Bus = Mitt;app.mount('#app')
监听
<template></template> <script setup lang="ts">
import { ref, getCurrentInstance } from 'vue';
type prop1 = {name: string
}
const title = ref('这是A组件')
const instance = getCurrentInstance()
instance?.proxy?.$Bus.on('changeName', (name:any) => {title.value = name
});
</script>
触发
<template><button @click="changeName">修改name</button>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import { getCurrentInstance } from 'vue';
const title = ref('这是B组件')const instance = getCurrentInstance()const changeName = () => {instance?.proxy?.$Bus.emit('changeName', '我是新数据')
}
</script>
五、v-model
父组件,可以添加v-model:textVal1.isSb自定义修饰符,通过textVal1Modifiers获取
<template>isShow:{{ value }}text: {{ text }}<dialcoag v-model:textVal1.isSb="text" v-model="value"></dialcoag>
</template>
<script setup lang="ts">
import dialcoag from './components/dialoag.vue';
import { ref } from 'vue';
const value = ref<boolean>(true)
const text = ref<string>('cqs')
</script>
<style>
* {text-align: left;
}
</style>
子组件
<template><div>{{ modelValue }}</div><div>{{ textVal1 }}</div><button @click="close">关闭</button>
</template>
<script setup lang="ts">
const props = defineProps<{modelValue: boolean,textVal1: string,textVal1Modifiers?: {isSb: boolean}
}>()const emit = defineEmits(['update:modelValue', 'update:textVal1'])const close = () => {emit('update:modelValue', false);emit('update:textVal1', props.textVal1Modifiers?.isSb ? 'dadadada' + 'sb' : '123456 ')
}
</script>
相关文章:
Vue3的组件如何通讯
一、defineProps,defineEmits 子组件nameChange.vue <template><div class"title">姓:{{ firstName }}</div><div>名:{{ lastName }}</div>{{ name }}<button click"clickTap">传…...
MySQL SUBSTRING_INDEX 函数用法
定义和用法 SUBSTRING_INDEX()函数在指定数量的分隔符出现之前返回字符串的子字符串。 语法 SUBSTRING_INDEX(string, delimiter, number) 参数值 参数 描述 string 必须项。原始字符串 delimiter 必须项。要搜索的分隔符 number 必须项。搜索分隔符的次数。可以是正…...
腾讯微服务平台TSF学习笔记(一)--如何使用TSF的Sidecar过滤器实现mesh应用的故障注入
Mesh应用的故障注入 故障注入前世今生Envoy设置故障注入-延迟类型设置故障注入-延迟类型并带有自定义状态码总结 故障注入前世今生 故障注入是一种系统测试方法,通过引入故障来找到系统的bug,验证系统的稳健性。istio支持延迟故障注入和异常故障注入。 …...
day30_servlet
今日内容 零、复习昨日 一、接收请求 二、处理响应 三、综合案例 零、复习昨日 画图, 请求处理的完整流程(javaweb开发流程) 零、注解改造 WebServlet注解,相当于是在web.xml中配置的servlet映射 Servlet类 package com.qf.servlet;import javax.servlet.ServletException; im…...
计算机毕业设计 基于SpringBoot的社区物资交易互助平台/系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
go 判断两棵树内容是否一致
goroutine http://127.0.0.1:3999/concurrency/8 question 使用 go 判断 两个 树 存放的 序列 是否 相同, 如果 相同 他们 被称为 equivalent_tree tree struct type Tree struct {Left *TreeValue intRight *Tree }由于 递归的 写法 比较简单, 此处 使用循环的 形式 来实…...
从Hugging Face上手动下载并加载预训练模型
0. 说明: 从 Hugging Face 上下手动载预训练的蛋白质语言模型(以ProstT5为例),用模型中的 encoder 部分对蛋白质进行编码,得到 embedding features,用于下游的任务。 【ps. 除了手动下载之外,…...
Vue 前置 后置 路由守卫 独享 路由权限控制 自定义属性
import Vue from vue import VueRouter from vue-router //导入路由器 Vue.use(VueRouter)import Login from ../components/Login import User from ../components/User //导入需要路由的组件const router new VueRouter({//暴露出去使用routes:[{path: /login,component: Lo…...
upload-labs关卡11(双写后缀名绕过)通关思路
文章目录 前言一、回顾前几关知识点二、靶场第十一关通关思路1、看源代码2、bp抓包双写后缀名绕过3、检查文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的…...
go语言学习之旅之Go语言基础语法二
学无止境,今天继续学习go语言的基础语法 变量(Variables): 变量声明: var x int变量初始化: var x int 10或者可以使用类型推断: x : 10多变量声明: var a, b, c int同时初始化多个变量&#…...
七天.NET 8操作SQLite入门到实战 - SQLite 简介
什么是SQLite? SQLite是一个轻量级的嵌入式关系型数据库,它以一个小型的C语言库的形式存在。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几…...
问题 R: 胜利大逃亡(HUST)
#include <deque> #define inf 200000 #include<iostream> #include<queue> using namespace std;// 迷宫坐标 int map[59][59][59] { 0 };// 可访问标记 int visit[51][51][51] { 0 }; // 移动方式 int next1[7][4] { {1,0,0},{-1,0,0}, {0,1,0},{0,-1,…...
项目讲解:让你在IT行业面试中以开发、实施、产品更近一步
1、会议系统项目 项目介绍 提示:可以简单介绍IT技术发展的背景 面试准备 开发 实施 产品 2、医疗项目 项目介绍 提示:可以谈谈你认为IT行业就业方向有哪些,并说出你认为最好的就业领域是什么? 面试准备 开发 实施 产品 3、数字化交…...
Windows 安装 Docker
目录 前言安装 WSL2WSL2 简介系统要求安装步骤 安装 Docker Desktop下载安装验证 安装 Docker Compose结语开源项目 前言 下图展示了在 Windows 系统上安装 Docker,并利用Docker Compose一键搭建 youlai-mall 微服务商城所需的环境。本篇将先介绍 Windows 上如何安…...
AI绘画使用Stable Diffusion(SDXL)绘制三星堆风格的图片
一、前言 三星堆文化是一种古老的中国文化,它以其精湛的青铜铸造技术闻名,出土文物中最著名的包括青铜面具、青铜人像、金杖、玉器等。这些文物具有独特的艺术风格,显示了高度的工艺水平和复杂的社会结构。 青铜面具的巨大眼睛和突出的颧骨&a…...
Window下如何对Redis进行开启与关闭
目录 前言1. 图文界面2. 命令行 前言 由于长期使用Linux界面,对于Window下的Redis,不知如何下手。特此记录该博文 特别注意,刚下载好的Redis,如果需要配置密码,可以再该文件进行配置:redis.windows-servi…...
C++ Qt 学习(十):Qt 其他技巧
1. 带参数启动外部进程 QProcess 用于启动外部进程int QProcess::execute(const QString &program, const QStringList &arguments);QObject *parent; ... QString program "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; argument…...
跳台阶游戏(Python排列组合函数itertools.combinations的应用)
给定台阶总数和两种单次可跳级数,编写自定义函数,计算所有的游戏组合方案数量。 (笔记模板由python脚本于2023年11月19日 19:18:48创建,本篇笔记适合熟悉python自定义函数编写,了解排列组合知识的coder翻阅) 【学习的细节是欢悦的…...
【Python百宝箱】Python测试工具大揭秘:从单元测试到Web自动化
前言 在现代软件开发中,测试是确保代码质量和稳定性的关键步骤。Python作为一门广泛应用的编程语言,拥有丰富的测试工具和库,从单元测试到Web自动化,覆盖了多个测试层面。本文将介绍一系列Python测试工具,帮助开发者选…...
〖大前端 - 基础入门三大核心之JS篇㊵〗- DOM事件监听及onxxx的使用
说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作…...
BabylonJS 6.0 实战:从零构建你的专属摄像机控制器
1. 认识BabylonJS摄像机控制器 第一次接触BabylonJS的开发者可能会对摄像机控制感到困惑。为什么我的模型转不动?为什么视角总是固定不变?其实这些问题都源于对摄像机控制机制的不了解。在3D场景中,摄像机就像我们的眼睛,而控制器…...
USB音频类设备开发与同步传输技术详解
1. USB音频类设备开发基础USB音频类设备开发是嵌入式系统设计中的一个重要领域,它利用USB协议中的同步传输技术实现高质量的音频数据传输。这种技术特别适合需要实时性和稳定性的音频应用场景。1.1 同步传输技术原理同步传输(Isochronous Transfers)是USB协议中四种…...
告别Keil破解!STM32CubeIDE保姆级安装与F1/F4器件包配置全攻略
从Keil到STM32CubeIDE:嵌入式开发者的无缝迁移指南 对于长期依赖Keil进行STM32开发的工程师来说,版权风险和编译效率问题始终如鲠在喉。当ST官方推出完全免费的STM32CubeIDE时,这不仅是工具链的简单替换,更代表着开发范式的重要转…...
别急着pip install!PyTorch项目里找不到efficientnet_pytorch,先检查这3个地方
当PyTorch报错找不到efficientnet_pytorch时,资深工程师的排查清单 遇到ModuleNotFoundError: No module named efficientnet_pytorch时,大多数开发者会本能地执行pip install。但真正高效的做法是先进行系统性排查——这能节省你未来数小时的调试时间。…...
苏格拉底式AI智能体锻造平台:原理、实现与应用
1. 项目概述:一个基于苏格拉底式对话的AI智能体锻造平台最近在AI智能体开发领域,一个名为“the-socratic-forge”的项目引起了我的注意。这个项目名本身就很有意思,直译过来是“苏格拉底锻造炉”。它不是一个简单的聊天机器人,而是…...
RimGPT:用GPT与Azure TTS为《边缘世界》打造AI动态语音解说
1. 项目概述与核心价值 如果你玩过《边缘世界》(RimWorld),肯定对游戏里那些沉默的殖民者、无声的机械族和安静的动物们习以为常。游戏本身提供了丰富的文字事件和日志,但总感觉少了点什么——一种能让这个科幻殖民地“活”起来的…...
开源AI写作工坊:本地部署、风格可控与文本优化实战
1. 项目概述:一个面向创作者的开源AI写作工坊在内容创作成为日常的今天,无论是自媒体博主、市场文案,还是学术研究者,都面临着一个共同的挑战:如何高效、高质量地产出符合特定风格和要求的文本。市面上的AI写作工具层出…...
Cyclone III FPGA在LCD HDTV图像处理中的优势与应用
1. Cyclone III FPGA在LCD HDTV图像处理中的核心优势LCD HDTV面临的最大技术挑战在于如何实时处理高分辨率视频流数据。传统方案使用ASSP或ASIC存在明显局限——ASSP缺乏算法灵活性,无法实现产品差异化;ASIC开发周期长且成本高昂。Cyclone III FPGA通过以…...
Rust Trait对象与多态:实现灵活的代码复用
Rust Trait对象与多态:实现灵活的代码复用 引言 大家好,我是一名正在从Rust转向Python的后端开发者。在学习Rust的过程中,Trait系统是我觉得最强大的特性之一。与Python的鸭子类型不同,Rust的Trait提供了一种类型安全的多态实现…...
Cursor AI编程效率追踪器:本地化数据采集与可视化分析实践
1. 项目概述:一个为开发者量身定制的效率追踪器最近在GitHub上看到一个挺有意思的项目,叫cursor-usage-tracker。光看名字,你可能觉得这又是一个平平无奇的“使用情况追踪器”。但如果你是一位深度使用Cursor(那个集成了AI能力的现…...
