Vue使用Ref跨层级获取组件的步骤


Posted in Vue.js onJanuary 25, 2021

Vue使用Ref跨层级获取组件实例

示例介绍

在开发过程中,我们难免会使用到跨层级的ref实例获取,大部分情况下,我们都可以通过组件自身的parent或者children去找到需要的实例。但是当层级不明显或者太深的时候,用此方法难免过于臃肿和低效率。

如下图所示,我们通过组件E去获取组件D的组件实例。

Vue使用Ref跨层级获取组件的步骤

文档目录结构

Vue使用Ref跨层级获取组件的步骤

分别有A、B、C、D、E和index六个组件,并按照上图的组件顺序,分别插入到各自的页面中。

页面样式如下:

Vue使用Ref跨层级获取组件的步骤

安装vue-ref

下载vue-ref

npm install vue-ref --save

全局注册

import ref from 'vue-ref'
Vue.use(ref)

使用方法

<!-- vm.dom will be the DOM node -->
<p v-ref="c => this.dom = c">hello</p>

<!-- vm.child will be the child component instance -->
<child-component v-ref="c => this.child = c"></child-component>

<span v-for="n in 10" :key="n" v-ref="(c, key) => {...}">{{ n }} </span>

根组件自定义方法[使用provide和inject]

我们index页面中,提供了三个方法:分别用来:

  • 设置子组件的实例,setChildrenRef
  • 获取自组件实例, getChildrenRef
  • 获取当前节点实例, getRef
provide() {
  return {
   setChildrenRef: (name, ref) => {
    this[name] = ref
   },
   getChildrenRef: name => {
    return this[name]
   },
   getRef: () => {
    return this
   }
  }
 },

分别说明各个页面

组件A页面:

Vue使用Ref跨层级获取组件的步骤

通过注入的方法,获取setChildrenRef方法,并通过上述指令,将组件D缓存起来

组件B页面:

Vue使用Ref跨层级获取组件的步骤

组件C页面:

Vue使用Ref跨层级获取组件的步骤

组件D页面:

Vue使用Ref跨层级获取组件的步骤

组件E页面:

Vue使用Ref跨层级获取组件的步骤

在这个页面中,我们不仅注入了两个方法,还设置了切换D组件颜色的方法,用来测试我们是否真的跨层级获取到了组件D的实例。

结果

Vue使用Ref跨层级获取组件的步骤

可以看到,三个parent的实例是一样的,在组件E中也成功修改了组件D的文字样式。good!

以上就是Vue使用Ref跨层级获取组件的步骤的详细内容,更多关于vue 使用Ref获取组件的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
浅析VUE防抖与节流
Nov 24 Vue.js
vuex页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
8个非常实用的Vue自定义指令
Dec 15 Vue.js
vue+vant 上传图片需要注意的地方
Jan 03 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
Vue常用API、高级API的相关总结
Feb 02 Vue.js
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
vue实现滑动解锁功能
Mar 03 Vue.js
使用vue判断当前环境是安卓还是IOS
Apr 12 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 #Vue.js
使用vue3重构拼图游戏的实现示例
Jan 25 #Vue.js
vue 计算属性和侦听器的使用小结
Jan 25 #Vue.js
vue keep-alive的简单总结
Jan 25 #Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 #Vue.js
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 #Vue.js
Vue仿Bibibili首页的问题
Jan 21 #Vue.js
You might like
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
Session的工作方式
2006/10/09 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
Linux下编译安装MySQL-Python教程
2015/02/02 Python
深入浅析Python字符编码
2015/11/12 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
Python如何在bool函数中取值
2020/09/21 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
妇科医生自荐信
2013/11/05 职场文书
全神贯注教学反思
2014/02/03 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
高中学生评语大全
2014/04/25 职场文书
产品推广策划方案
2014/05/10 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python