vue 父组件通过$refs获取子组件的值和方法详解


Posted in Javascript onNovember 07, 2019

前言

在vue项目中组件之间的通讯是很常见的问题,同时也是很重要的问题,我们大致可以将其分为三种情况:

父传子:在父组件中绑定值,在子组件中用props接收

子传父:在父组件中监听一个事件,在子组件中利用$emit触发这个事件并带上数据作为第二个参数,这时父组件中监听事件的回调函数就会被调用,回调函数的参数就是子组件带上来的数据,这样就可以在父组件中使用子组件的数据了,

兄弟之间的传递:我们可以使用事件总线(eventBus)来轻松的解决,其实就是发布订阅者模式

今天我们要看的是父组件如何直接调取子组件的数据和方法,而不是通过子组件传上来的

在这里我们要理解父组件直接拿事件是在父组件上,子组件传上来数据,事件是在子组件上,是完全不同的两种情况

代码展示

子组件 children.vue,我们在子组件中定义了数据sonData和方法sonMethod

// children.vue

<template>
 <div>我是 children</div>
</template>

<script>
export default {
 data: () => ({
  sonData: '我是子组件的数据!'
 }),
 methods: {
  sonMethod() {
   console.log('我是子组件的方法!')
  }
 },
 computed: {
  
 },
 created() {

 }
}
</script>

父组件 文件

// 父组件

<template>
 <div>
  <children ref='ch'>
  </children>
  <h1 @click="onclick">父组件</h1>
 </div>
</template>

<script>
import children from './coms/children'
export default {
 data() {
  return {}
 },
 components: {
  children
 },
 methods: {
  onclick() {
  // 或者 let chil = this.$refs['ch']
   let chil = this.$refs.ch

  // 父组件可以通过$refs拿到子组件的对象
  // 然后直接调用子组件的 methods里的方法和data里的数据
   console.log(chil) //子组件对象
   console.log(chil.sonData) // 我是子组件的数据
   console.log(chil.sonMethod()) // 我是子组件的方法
  }
 }
}
</script>

注意事项

因为 ref 本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在!,所以它不是响应式的,不能用在模板或者计算属性中。

以上这篇vue 父组件通过$refs获取子组件的值和方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript中Eval函数的使用说明
Oct 11 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
Jul 03 Javascript
如何解决Jquery库及其他库之间的$命名冲突
Sep 15 Javascript
判断iframe里的页面是否加载完成
Jun 06 Javascript
纯css实现窗户玻璃雨滴逼真效果
Aug 23 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
Jul 12 Javascript
jQuery插件扩展操作入门示例
Jan 16 Javascript
JavaScript中利用构造器函数模拟类的方法
Feb 16 Javascript
教你5分钟学会用requirejs(必看篇)
Jul 25 Javascript
vue-router传递参数的几种方式实例详解
Nov 13 Javascript
利用jsonp解决js读取本地json跨域的问题
Dec 11 Javascript
微信小程序API—获取定位的详解
Apr 30 Javascript
vue基本使用--refs获取组件或元素的实例
Nov 07 #Javascript
浅谈Vue中render中的h箭头函数
Nov 07 #Javascript
基于JavaScript伪随机正态分布代码实例
Nov 07 #Javascript
Vue 通过公共字段,拼接两个对象数组的实例
Nov 07 #Javascript
vue之a-table中实现清空选中的数据
Nov 07 #Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 #Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 #jQuery
You might like
无线电广播的开始
2002/01/30 无线电
PHP.MVC的模板标签系统(五)
2006/09/05 PHP
php字符串截取的简单方法
2013/07/04 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
python运行时间的几种方法
2016/06/17 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
Win10 安装PyCharm2019.1.1(图文教程)
2019/09/29 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
办公室前台岗位职责
2014/01/04 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书
联谊会开场白
2015/06/01 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书