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 相关文章推荐
在IE中调用javascript打开Excel的代码(downmoon原作)
Apr 02 Javascript
javascript function、指针及内置对象
Feb 19 Javascript
Ext JS添加子组件的误区探讨
Jun 28 Javascript
原生js操作checkbox用document.getElementById实现
Oct 12 Javascript
关于vue.js弹窗组件的知识点总结
Sep 11 Javascript
Javascript 严格模式use strict详解
Sep 16 Javascript
vue实现仿淘宝结账页面实例代码
Nov 08 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
bootstrap实现二级下拉菜单效果
Nov 23 Javascript
JS使用正则表达式提交页面验证的代码
Oct 16 Javascript
es6中new.target的作用和使用场景简单示例分析
Mar 14 Javascript
Javascript使用integrity属性进行安全验证
Nov 07 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
大师制作的中短波矿石收音机
2020/04/02 无线电
linux php mysql数据库备份实现代码
2009/03/10 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
用Python实现协同过滤的教程
2015/04/08 Python
python设计模式大全
2016/06/27 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
详解python调用cmd命令三种方法
2019/07/08 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Python列表list操作相关知识小结
2020/01/29 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
家具商场的活动方案
2014/08/16 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python