成都创新互联网站制作重庆分公司

Ref操作Dom在Vue2.x和Vue3.x的不同点有哪些

本篇内容介绍了“Ref操作Dom在Vue2.x和Vue3.x的不同点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、潜山网络推广、微信平台小程序开发、潜山网络营销、潜山企业策划、潜山品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供潜山建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

在开发一个项目之前,我们往往都是先做下需求分析,针对前端而言,就是可以调研或者选择一个基础组件库,来提高我们的工作效率。毕竟,对比较计较时间成本的公司来说,不会给你拿看电视剧玩游戏的时间去专门开发一个类似日历的组件。但在市面上的组件库,并不能都能满足我们的需求。这个时候,我们就需要自己手写组件,来应用到项目中。

而这就是我想说的: 如何设计组件,让其既能易于应用(或者说减少代码量),又能提高扩展性,方便需求变更和后续维护?

可以有很多种方式,而利用Ref操作Dom的特性随是其中之一,但这个方式却让我们在维护和操作Modal、Popup以及频繁操作Dom显示和隐藏交互的组件的时候,却发挥得很大优势。

就对Ref操作Dom的相关知识点以及应用实例分几个方面来做下剖析

  • Ref获取Dom的本质

  • Ref操作Dom在Vue2.x和Vue3.x的不同

  • Ref操作组件Dom和父子组件单向传递对比

详说

Ref获取Dom的本质

Vue2.x中Vue的对象属性$refs,其实就是所有注册过的ref的一个集合,而ref对应着template模版中,不同组件或普通Dom元素上关联的ref="xx"; 源码中ref的实际获取方式也是通过原生方式getElementById而得到的Dom节点;可以说ref是document.getElementById的语法糖。vue3的ref延续了vue2的用法,还增加了一个作用就是创建响应式数据

也许有人会问了,既然ref和getElementById都能获取到Dom,那么在项目开发中,我选择哪种方式都没什么区别呢?

关于这个问题,经过数据表明,$refs相对document.getElementById的方法,会减少获取dom节点的消耗;而具体原因,等下一篇文章再详细探讨。

Ref操作Dom在Vue2.x和Vue3.x的不同

Vue2.x

我们只需要在相应的Dom元素或者组件加上ref="xx"属性,然后在Vue对象中使用this.$refs.xx,就可以直接获取到该Dom并操作其方法属性,


或者
dd
// $refs
showManagerModal () {
  this.$refs.avaUserTreeSelect.showModal(this.form.managers)
  console.log(this.$refs.user.text)
},

Vue3.2

在Vue3.2版本使用的方式

//普通Dom
//组件

import { ref } from 'vue';
// modal调整部门弹层Dom
const batchAdjustDepartmentRef = ref(null);
const user = ref(null);

也许这里有人疑问,为什么声明了一个和template的ref中同名的常量变量就绑定了对应的dom? 在这里再补充说明一下: