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 相关文章推荐
jQuery对象和Javascript对象之间转换的实例代码
Mar 20 Javascript
jcrop基本参数一览
Jul 16 Javascript
JS清除IE浏览器缓存的方法
Jul 26 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
Apr 03 Javascript
js获取鼠标点击的位置实现思路及代码
May 09 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
Aug 16 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
Sep 01 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
JavaScript箭头(arrow)函数详解
Jun 04 Javascript
javascript使用正则实现去掉字符串前面的所有0
Jul 23 Javascript
vscode调试node.js的实现方法
Mar 22 Javascript
JS+css3实现幻灯片轮播图
Aug 14 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
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
javascript读取xml实现javascript分页
2013/12/13 Javascript
Angularjs 基础入门
2014/12/26 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
angular4自定义组件详解
2017/09/28 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
Python中无限元素列表的实现方法
2014/08/18 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
python3.7 sys模块的具体使用
2019/07/22 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
python selenium循环登陆网站的实现
2019/11/04 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
详解HTML5中的标签
2015/06/19 HTML / CSS
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
护士思想汇报
2014/01/12 职场文书
年度评优评先方案
2014/06/03 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
中标通知书
2015/04/17 职场文书
2015年行政部工作总结
2015/04/28 职场文书
患者身份识别制度
2015/08/06 职场文书
小学生六年级作文之关于感恩
2019/08/16 职场文书
Python OpenCV形态学运算示例详解
2022/04/07 Python