前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue组件通信-上篇

Vue组件通信-上篇

作者头像
测试加
发布2022-12-03 11:43:21
1.1K0
发布2022-12-03 11:43:21
举报
文章被收录于专栏:用户4624600的专栏

前言

组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用。本文会介绍下Vue组件通信的几种方式,这几种方式也是在开发项目中最常用的方法,接下来我们赶紧来学习下吧~

props

父组件向子组件传值

下面通过一个例子说明父组件如何向子组件传递数据:在子组件 SonPage.vue 中如何获取父组件 FatherPage.vue 中的数据 itemList: ['mike','tom','jordan']

子组件代码:

父组件代码:

prop只能从上层组件传递到下层组件(父子组件),即所谓的单向数据流。prop只读,不能修改,所有修改都将无效并发出警告。

emit

子组件向父组件传值

emit 绑定一个自定义事件, 当这个语句被执行时, 就会将参数 arg 传递给父组件,父组件通过 v-on 监听并接收参数。

父组件代码:

首先需要在父组件中需要暴露一个方法oneEmitIndex,这个方法可以供给子组件调用。并且在父组件使用子组件申明oneEmitIndex方法接受参数。

然后在子组件点击按钮的时候触发事件,使用emit绑定一个oneEmitIndex事件并且传递参数值。

最后,达到的效果是在子组件点击按钮后,把按钮的索引传递给父组件展示。

ref / refs

在子组件上,引用就指向组件实例,可以通过实例直接调用组件的方法或访问数据,我们看一个 ref 来访问组件的例子:

子组件代码:

子组件提供了一个getList方法,弹出alert("子组件的getList方法")。

父组件代码:

首先父组件中使用子组件需要声明ref="sonPage",点击button调用getSonList方法,使用this.$refs.sonPage的实例直接调用子组件getList方法。

如下图就是在父组件弹出alert的效果。

parent / children

父组件代码:

parent是Vue实例,指定已创建的实例之父实例,在两者之间建立父子关系。

子组件代码:

子实例可以用this.parent访问父实例,子实例被推入父实例的children数组中。

通过 parent/children就可以访问组件的实例,代表可以访问此组件的所有方法和data。

$children是一个数组,是直接儿子的集合,关于具体是第几个儿子,那么儿子里面有个 _uid属性,可以知道他是第几个元素,是元素的唯一标识符,根据这个属性。

provide / inject

简单的来说就是在父组件中通过provider来提供变量,然后在子组件中通过inject来注入变量。

父组件代码:

子组件代码:

需要注意的是这里不论子组件有多深,只要调用了inject那么就可以注入provider中的数据。而不是局限于只能从当前父组件的prop属性来获取数据。

结语

本文就介绍了Vue组件通信最基础和最常用的几种方式,对于刚入门学习Vue的同学还是非常实用的,下文会介绍Vue中高阶的组件通信方法,希望大家能持续关注~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试加 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • props
  • emit
  • ref / refs
  • parent / children
  • provide / inject
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档