前端框架VUE—父子组件访问方式

开发 前端
有时候我们需要父组件直接访问子组件 或 子组件直接访问父组件。父访问子组件通常有两种方法:一种是使用 $childre,另一种是使用$ref属性。

[[423976]]

有时候我们需要父组件直接访问子组件 或 子组件直接访问父组件。

一、父访问子

父访问子组件通常有两种方法:一种是使用 $childre,另一种是使用$ref属性。

1、$children

  1. //父组件中打印 
  2. mounted(){ 
  3.  console.log( this.$children ); 
前端框架VUE(二)——父子组件访问方式

返回的结果是一个数组,由于该文件只有一个组件,所以返回是长度为1 的数组。

  1. this.$children[0].data //返回子组件的数据 
  2.  
  3. this.$children[0].showMethods() //调用子组件的showMethods方法 
  4.  
  5. this.$children[0].$el //子组件的根元素 
  6. ... 

如果不包含子组件时,默认返回空数组。

2、$refs

如果 ref 是加在普通元素上,this.$refs.name获取到的是dom值。

如果 ref 加在组件上,this.$refs.name 获取到的是组件实例,可以使用组件的所有方法。

ref 使用实例如下:

  1. //子组件调用 
  2. <cld ref="cld"></cld> 
  3. <cld ref="cxd"></cld> 
  4.  
  5. //打印  
  6. console.log(this.$refs); 

打印结果如图:

前端框架VUE(二)——父子组件访问方式

this.$refs 返回是一个对象,如需要获取第一个子组件时,可以使用:

  1. this.$refs.cld 
  2.  
  3. this.$refs.cld.data //子组件的数据 
  4.  
  5. this.$refs.cld.showMethods() //调用子组件的方法 

如果组件中没有 ref 属性时,默认是一个空的对象。

3、$children VS $refs

children 返回的是数组,而 refs 返回的是对象类型。

使用children获取子组件件时,易受到其他组件干扰,较容易出错,所以children 很少使用。经常使用 $ref 获取子组件。

二、子访问父

子组件访问父组件时使用 $parent 。

  1. this.$parent 

返回的是一个对象。一般开发中很少使用,因为子组件拿父组件的数据,会导致两个组件的耦合度过高,当子组件是一个公共组件,哪里都可以引入使用时,这时其它地方引入这个子组件时就会出问题。

vue 开发的项目最大特点就是,开发出一个一个独立的可复用的小组件,来构建大型应用。所以 $parent 基本不使用。

三、访问根组件

访问跟组件使用 $root 。

  1. this.$root 

返回的是 vue 的实例化对象。

  1. this.$root.$el //根元素 
  2.  
  3. this.$root.data //vue实例中数据 

 

责任编辑:姜华 来源: 今日头条
相关推荐

2021-09-13 09:20:20

前端框架VUE

2020-09-12 16:22:27

Vue

2019-05-29 14:23:53

Vue.js组件通信

2023-04-18 09:17:40

父子组件Vue

2024-01-09 08:34:56

Vue3.js组件通信

2022-07-27 08:40:06

父子组件VUE3

2022-01-25 18:11:55

vdomclassfunction

2024-10-15 07:42:09

Vue动态加载

2019-04-10 08:24:06

vue组件通信

2019-08-14 10:00:08

vue组件通信前端

2023-04-27 08:23:38

JavaScriptVue.jsMVVC

2017-09-27 16:44:23

前端

2022-03-07 14:39:01

前端框架批处理

2022-05-06 08:47:10

Vue 3组件前端

2020-04-08 18:29:20

Vue组件属性

2023-04-27 11:07:24

Setup语法糖Vue3

2023-09-05 23:29:49

前端Vue

2019-05-15 08:00:00

vue组件间通信前端

2021-05-06 07:40:56

Vue3 Vue2 组件

2023-03-30 11:50:34

点赞
收藏

51CTO技术栈公众号