下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第老生常谈vue3组件通信方式目录vue3七种组件通信方式1.Props方式2.emit方式3.v-model方式4、Refs5.provide/inject6.eventBus7.vuex/pinia
vue3七种组件通信方式
面试题经常会问到vue3组件间的通信方式,下文列举了七种常见的通信方式。
propsemitv-modelrefsprovide/injecteventBusVuex4/pinia(vuex5)
1.Props方式
父组件以数据绑定的形式声明要传递的数据,子组件通过defineProperty()方法创建props对象,即可拿到父组件传来的数据。
父组件的template中:
!--list是我们要传递的数据--
child-components:list="list"/child-components
子组件:
template
liv-for="iinprops.list":key="i"{{i}}/li
/ul
/template
scriptsetup
import{defineProps}from'vue'
constprops=defineProps({
list:{
type:Array,
default:()=[],
/script
注意在
2.emit方式
emit方式也是Vue中最常见的组件通信方式,该方式用于子传父;
父组件的template中:
!--add是子组件要传递的动作,handleAdd是监听到之后执行的事件--
child-components@add="handleAdd"/child-components
script
constlist=ref([1,2,3])
consthandleAdd=value={
list.value.push(value)
/script
子组件中:
constemits=defineEmits(['add'])
emits('add',1)
3.v-model方式
v-model不能严格成为数据的传递方式,其实只是减少了代码量。
ChildComponentv-model:list="list"/
//等价于
ChildComponent:list="pageTitle"@update:list="list=$event"/
子组件需要emit一个叫update:xxx的事件,再把需要更新的响应式数据传给emit方法的第二个参数即可,如:
constemits=defineEmits(['update:list'])
emits('update:list',arr)
4、Refs
有时候想访问refs绑定的组件的属性或者方法,我们会使用refs绑定的组件的属性或者方法,我们会使用refs绑定的组件的属性或者方法,我们会使用refs。但是Vue3不同于Vue2,在Vue3的setup中我们是无法访问到this的,所以我们需要借助一个方法,那就是getCurrentInstance,该方法返回了当前的实例对象。
父组件如下:
template
div
Childref="child"/Child
button@click="show"ShowChildMessage/button
/div
/template
scriptsetup
import{getCurrentInstance}from'@vue/runtime-core';
importChildfrom'./Child.vue';
constcurrentInstance=getCurrentInstance()
functionshow(){
currentInstance.$refs.child.alertMessage()
/script
子组件代码如下:
template
div
h1{{message}}/h1
/div
/template
scriptsetup
import{ref}from'@vue/reactivity';
letmessage=ref('我是子元素').value
constalertMessage=function(){
alert(message)
defineExpose({
message,
alertMessage
/script
注意⚠️,通过scriptsetup语法糖的写法,其组件是默认关闭的,也就是说如果是通过$refs或者$parents来访问子组件中定义的值是拿不到的,必须通过defineExpose向外暴露你想获取的值才行。
5.provide/inject
provide/inject是Vue中提供的一对API。无论层级多深,API都可以实现父组件到子孙组件的数据传递。
//父组件中
provide('list',list.value)
//子组件中
constlist=inject('list')
6.eventBus
Vue3中移
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 骨科护理技术操作规范
- 大肠息肉术后运动康复护理
- 预见性护理在康复护理中的应用
- 药物应用护理中的持续质量改进
- 内镜间质瘤患者的心理护理与支持
- 南京公务员试题及答案
- 教案-单元六任务1证件照制作-美图秀秀
- (二)安全用电试卷附答案
- 刨花板铺装工核心实操评优考核试卷含答案
- 薪税师合规测试考核试卷含答案
- 2026中国主题公园行业市场调研及消费趋势与投资机会研究报告
- 2026届陕西西安高考物理模拟卷(原卷版)
- 长期照护师职业技能鉴定考试复习题库(附答案)
- 2026年大学财务处招聘考试专业知识模拟题
- 2025年荣耀AI隐私安全白皮书
- 2026届山东省聊城市临清市重点达标名校中考押题生物预测卷含解析
- 太阳能光热发电课件
- 2026中复神鹰碳纤维西宁有限公司招聘40人考试参考试题及答案解析
- 关于取消原定采购订单的通知函8篇
- 围手术期营养支持指南
- 格力中央空调培训课件
评论
0/150
提交评论