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实现下载文件流完整前后端代码
Nov 17 Vue.js
vue组件中节流函数的失效的原因和解决方法
Dec 02 Vue.js
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
Dec 15 Vue.js
Vue-router中hash模式与history模式的区别详解
Dec 15 Vue.js
手写Vue源码之数据劫持示例详解
Jan 04 Vue.js
vue element和nuxt的使用技巧分享
Jan 14 Vue.js
Vue 数据响应式相关总结
Jan 28 Vue.js
Vue+Element UI实现概要小弹窗的全过程
May 30 Vue.js
vue Element-ui表格实现树形结构表格
Jun 07 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
vue @ ~ 相对路径 路径别名设置方式
Jun 05 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
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
javascript getElementsByName()的用法说明
2009/07/31 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
javascript实现连续赋值
2015/08/10 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
2016/03/25 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
Python文件操作类操作实例详解
2014/07/11 Python
python xml解析实例详解
2016/11/14 Python
Python算法之图的遍历
2017/11/16 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
python3使用GUI统计代码量
2019/09/18 Python
python 图像增强算法实现详解
2021/01/24 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
美国翻新电子产品商店:The Store
2019/10/08 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
策划主管的工作职责
2013/11/24 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
教师个人自我评价范文
2014/04/13 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
2015年安全工作总结范文
2015/04/02 职场文书