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 篱式条件判断
Aug 22 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
Aug 05 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
Nov 22 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
Dec 24 Javascript
javascript快速排序算法详解
Sep 17 Javascript
js实现简单随机抽奖的方法
Jan 27 Javascript
jQuery实现给input绑定回车事件的方法
Feb 09 Javascript
前端常见跨域解决方案(全)
Sep 19 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
Sep 26 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
Oct 31 Javascript
JavaScript自定义超时API代码实例
Apr 30 Javascript
Vue全家桶入门基础教程
May 14 Vue.js
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
色色整理的PHP面试题集锦
2012/03/08 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
详解JavaScript之ES5的继承
2020/07/08 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
Python实现线程池代码分享
2015/06/21 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
python中怎么表示空值
2020/06/19 Python
深入了解Python enumerate和zip
2020/07/16 Python
python 写一个文件分发小程序
2020/12/05 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
党员岗位承诺书
2014/03/25 职场文书
工会工作先进事迹
2014/08/18 职场文书
2014年售票员工作总结
2014/11/19 职场文书
礼貌问候语大全
2015/11/10 职场文书