组件高级通信

文章详细介绍了Vue.js中6种组件通信的方式,包括props、自定义事件、全局事件总线$bus、pubsub.js、Vuex状态管理以及插槽机制。还提到了事件处理、v-model、属性修饰符sync、$children与$parent、混入mixin以及作用域插槽的概念和应用场景。
摘要由CSDN通过智能技术生成

总结

组件通信方式:我们已经学习过的组件通信方式6种

第一种:props

适用于的场景父子组件通信

注意事项:

如果父组件给子组件传递数据(函数):本质其实是子组件给父组件传递数据

如果父组件给子组件传递的数据(非函数):本质就是父组件给子组件传递数据

书写方式:3种

['toobs'],

{type:Array},

{type:Array,default:[]}

(['toobs']接收父组件传来的数据,(type:Array)接收的数据类型,default:[]默认值)

小提示:路由的props

书写形式:布尔值、对象、函数形式

第二种:自定义事件

适用于场景子组件给父组件传递数据

$on$emit

第三种:全局事件总线$bus

适用于场景:万能

Vue.prototype.$bus = this;

第四种:pubsub.js,在React框架中使用比较。(发布与订阅)(Vue很少用)

适用于场景:万能

第五种:Vuex

适用于场景:万能

第六种:插槽

适用于场景:父子组件通信----(一般结构

默认插槽

具名插槽

作用域插槽

(忽略)案例准备

1)事件注意事项Event

原生DOM、组件标签

原生DOM,如<button></button>

组件标签,如<Event1></Event1>属于自定义事件

事件:系统事件 click、双击、鼠标系列等等

自定义事件

事件源、事件类型、事件回调

1:原生DOM---button可以绑定系统事件---click单击事件等等

2:组件标签---event1可以绑定系统事件(不起作用:因为属于自定义事件)---.native(可以把自定义事件变成原生DOM事件

2)v-model【组件通信方式一种】

v-model它是Vue框架中的指令,它主要结合表单元素一起使用文本框、复选、单选等等)

它主要作用是收集表单数据

v-model实现原理value与input事件实现的,而且还需要注意可以通过v-model实现父子组件数据通信

3)属性修饰符sync【组件通信方式一种】

可以实现父子组件数据同步

:money.sync,代表父组件给子组件传递props【money】当前子组件绑定一个自定义事件(update:money)

4)$listeners与$attrs(组件通信方式一种)

它们两者都是组件实例的属性。可以获取到父组件给子组件传递props与自定义事件

5)$children与$parent

ref可以获取到某一个组件,子组件

$children组件实例的属性,可以获取到当前组件的全部子组件数组】((但不能采用数组下标,因为可能乱序))

$parent组件实例的属性,可以获取到当前子组件的父组件,进而可以操作父组件的数据与方法

6)混入mixin

如果项目当中出现很多结构类似功能,想到组件复用

如果项目当中很多的组件JS业务逻辑相似,想到minxin。【可以把多个组件JS部分重复、相似地方

7)作用域 插槽

插槽:可以实现父子组件通信(通信的结构)

默认插槽

具名插槽

作用域插槽子组件的数据来源于父组件,子组件是决定不了自身结构与外观

(忽略)vue-helper提示 书写代码

报错:cmd运行npm run serve一直停留51%不动

解决

由于渲染原因。如出现标签未闭合等问题

路由文件router.js中先把全部注释,一个个路由组件打开,看哪个打开以后会出现这种问题,则是该组件的文件有问题。

渲染原因,该文件出现数字(报错)。

需要注意:只有一个根div标签,标签有<div>,则要有</div>,否则也会报错

报错Can't resolve '@pages/Communication/Communicaition'

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pomelo-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值