Vue3学习 组件之间的传参

Vue3复习和总结(Component)组件v-model参数和动态组件和Attribute 继承 Vue3复习和总结(Component)组件v-model参数和动态组件和Attribute 继承 代码全部放在->github仓库:https://github.com/zyugat/vue-review-all 前言:分为base、Component、router、Vuex、组合式API。5个部分。 base和Component中的例子不使用脚手架运行,需自行浏览器运行。位置->noCli 组件v-model参数和动态组件和Attribute 继承Vue3复习和总结(Component)组 阅读详情

父子组件传参

1:父传子
父

:title='name' :arr='[1,2,3]'
const name = 'Jason'

子

{{title}}    
const props = defineProps({
    title:{
        type:string,
        default:'Harry'
    },
    arr:{
        type:number[],
        default:[0]
    }
})
const name = props.title

   或

const props = defineProps<{
    title:string,
    arr:number[]
}>()

//TS 特有设置默认值
withDefaults(defineProps<{
    title:string,
    arr:number[]
}>(),{
    arr:()=>[666],
    title:'Harry'
})

2: 子传父 -> 基于事件派发
子:

@click='send' 
    
const emit = defineEmits(['on-click'])
const send = ()=>{
    emit('on-click', '小满')
}
或
const emit = defineEmits<{
    (e:'on-click',name:string):void
}>()

 父:

@on-click='getName'
const getName = (name:string)=>{
    console.log(name)
}

3: 子组件暴露属性方法给父组件
子child.vue:

defineExpose({
    name:'小满',
    open:()=>{console.log('method')}
}) 

父:

ref="child"

import childVue from './child.vue'
const child = ref<InstanceType<typeof childVue>>()
const name = child.value?.name
child.value?.open()

多重父子组件之间的传参

爷组件

import {provide, readonly} from 'vue'
const color = ref<string>('red')
provide('color', color) 如果不想被子组件修改  provide('color', readonly(color))

父组件

import {inject} from 'vue'
import type {Ref} from 'vue'
const color = inject<Ref<string>>('color',ref('red')) //设默认值

孙组件和父组件一样

import {inject} from 'vue'
import type {Ref} from 'vue'
const color = inject<Ref<string>>('color')

兄弟组件之间传参

1: 通过父组件作为中间
2: EventBus  Bus.ts

type BusClass = {
    emit:(name:string)=>void
    on:(name:string, callback:Function)=>void
}
type paramKey = string|number|symbol
type List = {
    [key:paramKey]:Array<Function>  //使用对象签名的方式
}

class Bus implements BusClass {
    list: List
    constructor(){
        this.list = {}
    }
    emit(name:string, ...args:Array<any>){
        let eventName:Array<Function> = this.list[name]
        eventName.forEach(fn=>{
            fn.apply(this, args)
        })
    }
    on(name:string,    callback:Function){
        let fn:Array<Function> = this.list[name] || []
        fn.push(callback)
        this.list[name] = fn
        
    }
}
export default new Bus()
A组件    
import Bus from './Bus'
Bus.emit('on-click','Jason')
    
B组件
import Bus from './Bus'
Bus.on('on-click', (name:string)=>{
    console.log(name)
})

3: 使用第三方组件Mitt
    npm install mitt -S
    方式一: 挂载到全局 main.ts

import mitt from 'mitt'
const Mit = mitt()
//TS注册,必须拓展ComponentCustomProperties类型才能得到类型提示
declare module "vue" {
    export interface ComponentCustomProperties{
        $Bus: typeof Mit
    }
}
const app = createApp(App)
//Vue3挂载全局API
app.config.globalProperties.$Bus = Mit

A组件

@click='emit'
    
import { getCurrentInstance } from 'vue'
const instance = getCurrentInstance()
const emit = ()=>{
    instance?.proxy.$Bus.emit('on-click', 'Jason')
}

B组件

import { getCurrentInstance } from 'vue'
const instance = getCurrentInstance()
instance?.proxy?.$Bus.emit('on-click', (name;string)=>{
    console.log(name)
})

多条的情况

const callback = (type, callback)=>{
    console.log(type, param)
}

instance?.proxy?.$Bus.emit('*', callback)

删除监听事件

instance?.proxy?.$Bus.off('on-click', callback)

删除所有监听事件  

instance?.proxy?.$Bus.all.clear()

vue3父子组件间传参通信 本文主要是记录Vue3在setup语法糖下的父子组件间通信的四种方式。 阅读详情

相关推荐

Vue学习记录之七(组件之间传参)

父: App.vue, 通过使用组件 ,传递给子组件传递了一个t字符串类型是不需要v-bind,也就是不需要冒号,非字符串类型的必须加 v-bind(😃。

LvManBa的博客 1272

Vue3组件传参

vue3组件间的传值

小张同学的博客 9045

Vue前端开发-组件之间传参

与父子间传参不同,组件之间的传参需要采用全局组件通讯方案,在个方案下的任意组件,不管是父子、兄弟还是祖先关系,都可以进行传参通讯,而要完成这个方案,则依赖于全局事件总线,由它来完成全局组件通讯的过程。

1074

前端学习笔记(14)-Vue3组件传参

Vue3组件传值的几种方法:props,emit,双向绑定,provide、inject(依赖注入) 以及 ref实现组件子传父、父传子

JiangZhengyang7的博客 9475

Vue前端开发之父组件向子组件传参

Vue 框架中的核心是组件,在页面视图中,大部分的功能和效果都是通过组件来完成的,为了便于功能的复用,又会提取出公共组件;当一个组件去调用公共组件时,它就是父组件,而此时的公共组件就是子组件,那它们是如何传参的呢?接下来进行详细介绍。

1165

Vue3-20-组件-父组件给子组件传值

vue3 中 的父组件 传值 给 子组件 的方式

northcastle的博客 2447

vue3学习教程第十三节(组件之间传参通讯:props/$emit/$on/provide/inject/$attrs/$parent/pinia)父子传参、子向父传参

vue3项目中组件之间传参,事件触发:常用的六中方式:props 、$emit、$on、provide、inject、$attrs、$parent、pinia、defineExpose

刺客-Andy 的博客 1691

电价预测的Transformer实战:从注意力机制到超长序列建模

本文深入探讨了Transformer模型在电价预测领域的实战应用,对比了其与LSTM在处理长序列依赖和误差累积问题上的优劣。文章详细解析了自注意力机制的原理,并提供了处理超长序列的位置编码方法、构建专用预测模型的完整PyTorch代码,以及防止信息泄露的关键技巧。通过实战对比,展示了Transformer在并行计算、长距离建模和预测精度上的显著优势,并分享了应对极端波动和提升模型效率的高级优化策略。

f6g7h8i9j的博客 541

vue3-组件传参及计算属性

vue3-组件传参及计算属性

唯见青山不见君 3916

腾讯文档API逆向分析:不用Selenium也能批量导出的黑科技

本文揭秘了如何通过Python逆向分析腾讯文档的隐藏API,实现无需Selenium即可批量导出在线表格的高效方法。详细解析了API调用流程、Cookie维护及异常处理技巧,相比传统方案性能提升显著,适用于大量文档导出的自动化场景。

h9j8k7l6m5n的博客 1202

利用eds editor生成CANOPEN 设备eds文件

通过以上步骤,您可以根据实际设备的功能特性,自动生成一份符合CANopen协议标准的电子数据表(EDS文件),该文件可以被上位机软件或其他CANopen主站设备用于识别、配置和控制您的CANopen从站设备。使用CANopen EDS Editor生成CANOPEN设备的EDS文件是一个系统化的过程,它涉及将设备的具体技术参数和功能映射到CANopen规范定义的对象字典中。

weixin_38604759的博客 6459

vue3组件传参的N种方法

本文总结了Vue组件间通信的8种方式:1)父子组件通过props/emit单向传参;2)v-model实现父子双向绑定;3)refs访问子组件实例;4)provide/inject跨层级传参;5)Pinia/Vuex管理全局状态;6)mitt事件总线实现任意组件通信;7)路由参数传递页面级数据;8)插槽传递带结构的内容。文章对每种方式的原理、示例代码和使用场景进行了说明,并建议根据组件关系选择合适方案:父子优先用props/emit,跨级用provide/inject,全局用Pinia,简单跨组件用事件总线

爱尚丽明的博客 2613

【科研学习】Demo3D2015安装包以及图文安装步骤

安装包 点击下图的.exe文件,安装 不需要解压,打开注册机 如下图: 点击上图的.exe文件,出现下图 先点击 patch 打开安装目录下的Demo3D.licensing.dll文件,然后点击Generate,生成dvt-license文件,保存即可 打开安装完成的Demo3D 2015(64-bit),一般破解没完成的,会出现一个request a license 的问题,点击find license 的那一行 点击后找到自己Generate,生成dvt

KaelCui的博客 1万+

VUE3 之 组件传参

目录 1. 概述 2. 组件传参 3. 综述 4. 个人公众号 1. 概述 韦奇定律告诉我们:大部分人都很容易被别人的话所左右,从而开始动摇、怀疑,最终迷失自我。因此我们要努力的坚定信念,相信自己,才不会被周围的环境所左右,才能取得最终的胜利。 言归正传,之前我们聊了组件的概念,既然有多个组件,那自然存在组件间传参的问题,今天我们就来聊聊 VUE 的 组件传参。 2. 组件传参 2.1 初识组件传参 <body> <div id="myDiv">

追风人的博客 5317

别再只飞不记了!用CsvView分析你的大疆飞行日志,优化航拍与排查炸机原因

本文详细介绍了如何利用CsvView工具分析大疆无人机的飞行日志,帮助用户优化航拍效率和飞行安全。通过解读飞行日志中的关键数据,如电池性能、飞行轨迹等,用户可以及时发现潜在问题并改进飞行习惯。文章还提供了事故排查方法和进阶分析技巧,适合无人机爱好者和专业飞手。

weixin_42535461的博客 549

Joern实战:从代码导入到Python分析的全流程避坑指南(附常见错误解决方案)

本文详细介绍了Joern静态分析工具从代码导入到Python分析的全流程实践指南,包括环境配置、代码导入技巧、数据库服务优化、Python交互分析及性能调优等关键步骤。特别针对常见错误提供了实用解决方案,帮助开发者高效进行代码安全分析和漏洞挖掘。

weixin_28309571的博客 141

总结Vue3的11种传参通信方式,非常齐全

vue3出来很久了,也非常成熟了,平时项目只管用也没多想,直至今天想写一编关于vue3传参,然后我总结一下竟然总结出来11种方式那么多,11种我分别列了出来,由于vue3有两种setup写法,下面我将用最简洁的代码例子针对主流的父传子子传父兄弟组件传参(mitt)$attrsrefsv-model路由传参vuex传参pinia传参浏览器缓存空闲想总结一下,纯人工肝了一天终于写好了,我尽量用最简洁易懂的方式写了,如果有什么写错了或者不够明细都欢迎大家指出。

talentT的博客 1万+

ESP32-C3入门教程 环境篇③——VS Code IDE快速入门

文章目录一、安装Visual Studio Code二、安装扩展三、配置ESP-IDF 插件四、创建工程五、配置工程5.1 选择目标芯片5.2 项目配置六、编译工程七、固件分析七、固件下载八、串口日志九、单步调试 一、安装Visual Studio Code 下载并安装Visual Studio Code 二、安装扩展 左侧扩展 搜索espressif 点击安装 三、配置ESP-IDF 插件 按下F1按键 输入configure esp-idf extension EXPRESS,如果你

8304

vue中组件之间的传参

一、父子组件传值 父传子 2.父子件写法 注意:如果想传递动态值: 二.子组件向父组件传值 1.子组件 2.父组件 3、兄弟组件之间传值 (1)在src中新建一个Bus.js的文件,然后导出一个空的vue实例 (2)在传输数据的一方引入Bus.js 然后通过Bus.e m i t ( “ 事 件 名 ” , " 参 数 " ) 来 来 派 发 事 件 , 数 据 是 以 emit(“事件名”,“参数”)来来派发事件,数据是以emit(“事件名”,“参数”)来来派发事件,数.

weixin_50539470的博客 2130

6、核函数与再生核希尔伯特空间:原理、应用与实践

本文系统介绍了核函数与再生核希尔伯特空间(RKHS)的理论基础、核心性质及其在机器学习和信号处理中的广泛应用。文章从核方法的优势出发,阐述了其在非线性建模、正则化和算法核化方面的独特价值,并深入探讨了正定核、Mercer定理、表示定理等关键理论。通过构建多种标准核与工程专用核,展示了核函数的设计灵活性。结合支持向量回归(SVR)模型与多个MATLAB示例,详细说明了核方法的实际应用流程与操作技巧。最后,总结了核方法的应用领域、未来发展方向及学习实践建议,为读者提供了一套完整的理论与实践指南。

z2a3b4c5d的博客 145

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Vue3组件之间相互传参

Vue3 中没有了 EventBus 跨组件通信,但是现在有了一个替代的方案 mitt.js,原理还是 EventBus。在父组件的模板中,监听子组件触发的自定义事件,并在事件处理函数中接收数据。在子组件中,通过emit方法触发一个自定义事件,并传递数据给父组件。在父组件的模板中,通过属性绑定的方式将数据传递给子组件。在main.js中引入,这个封装的文件。1、父组件向子组件传递数据。2、在子组件接收数据。父组件AboutView.vue。子组件HomeView.vue。父组件挂载到App.vue。

2301_81894127的博客 2084

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

vue传参,组件之间传参、路由传参、vuex

一、组件之间传参 详见:添加链接描述 二、路由传参 两种情况:params 和 query 都可以在目标组件的生命周期里,通过 this.$route 进行获取 methods:{ goTheme(item){ //点击图片跳转主题界面 // this.$router.push({path:'/theme/123'}) ...

WhyBecause的博客 1062

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

探寻 Vue 组件的几种传参方式:Vue 2 与 Vue 3 对比解析

本文深入探讨 Vue 2 和 Vue 3 中组件的几种常见传参方式发送数据

前端开发探索之旅 1489

vue 组件之间传值 父转子,子传父,同级别之间的传参,跨级别传参

写这篇文章之前,我对vue组件之间的传值,还是只知道一些基础的传值方式。虽然工作中勉强能够应对,但是想要行云流水感觉还是心有余而力不足,所以在此,我想总结一下vue组件之间的一些传值方式供大家参考,同时也是给自己加深下记忆。 vue的传值方式大概分为以下几种 父传子 子传父 兄弟间 隔代传参 首先我们介绍下第一种 父传子: 父传子方式1:最常用的就是props传值,这种方式大家都很熟悉...

烎烎的博客 1524

总结 Vue3 的 13 种传参通信方式,非常齐全!!!

这篇文章总结了 Vue3 的 13 种传参通信方式,包括 refs 传参、v-model 及其扩展、provide/inject、路由传参(query、params、state)、vuex、pinia、浏览器缓存、通过 window 对象全局挂载、等,每种方式都有详细的代码示例和简单讲解。

scorpion_V的博客 2444
上一篇: MySQL if语句的三种用法(转载)
下一篇: Vue3学习 路由
Wo_Ai_Java
博客等级 码龄16年 26粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值