当前位置: 首页 > news >正文

vue中ref的用法

vue中ref的用法

在项目中使用ref时有时候直接取值,有时候返回的却是一个数组,不知其中缘由,后查了一下ref用法,所以总结一下.

1.绑定在dom元素上时,用起来与id差不多,通过this.$refs来调用:
<div id="passCarEchart" ref="passCarEchart" style="height: 300px; width: 100%"></div>console.log(this.$refs.passCarEchart)

在这里插入图片描述
看到打印出来就是绑定的dom对象,可以用来执行一些dom操作,比如操作样式,获取属性等:

let passCarEchart= this.$refs.passCarEchart
passCarEchart.style.height = '200px'
passCarEchart.style.background = 'red'
console.log(passCarEchart.clientHeight)
2.如果refs自身的dom,或父级的dom是通过v-for渲染出来的,vue框架就会把refInFor设置成true,然后ref.key在registerRef函数就被设置成数组
<divv-for="item in csGroupNameArr":key="item"
><div ref="arrayDiv">{{ item }}</div>
</div>
this.$nextTick(() => {console.log(this.$refs.arrayDiv,'arrayDiv')})

在这里插入图片描述

3.ref除了这两个用法,还有另一种用法,绑定在组件标签上:

<CheckPointref="checkPoint"v-model="checkPointNumbers"@clearData="clearCheckPointData"></CheckPoint>
console.log(this.$refs.checkPoint)

在这里插入图片描述
可以看到这次和我们之前绑定在dom元素上有很大的不同,这次获取到的是一个VueComponent对象,里面有这个组件的各个属性,这些属性里面有一个$el,这就是dom对象,就是和我们直接绑定在dom元素上获取的一样:

console.log(this.$refs.checkPoint.$el)

在这里插入图片描述
通过$refs获取的对象中,我们可以看到里面还有我们设置在data里面的变量,我们是可以直接通过这种ref的方式去修改,它就等于拿到那个组件的this,可以直接调用,不仅是data里面的变量,还有methods里面的方法.

4.这种用法还可以在用ui框架的组件的时候,ui框架给我们提供了很多组件的方法,就是要通过这个ref去调用,比如说element-ui的树形组件

例子:

<el-form ref="personDialogForm" :inline="true" class="dialog-form" :model="form" :rules="dialogRules">

这里就不多介绍用法了,一般组件库官网中各自的用法.

http://www.lryc.cn/news/230801.html

相关文章:

  • 【华为OD题库-012】模拟消息队列-Java
  • Android修行手册 - 阴影效果的几种实现以及一些特别注意点
  • 【星海出品】SDN neutron (五) openvswitch
  • springboot整合vue2实现简单的新增删除,整合ECharts实现图表渲染
  • <蓝桥杯软件赛>零基础备赛20周--第5周--杂题-2
  • 数据结构哈希表(散列)Hash,手写实现(图文推导)
  • 【嵌入式设计】Main Memory:SPM 便签存储器 | 缓存锁定 | 读取 DRAM 内存 | DREM 猝发(Brust)
  • dameng数据库数据id decimal类型,精度丢失
  • python图神经网络,注意力机制、Transformer模型、目标检测算法、强化学习等
  • 安装包 amd,amd64, arm,arm64 都有什么区别
  • Ansible 企业实战详解
  • 云贝教育 |【技术文章】pg缓存插件介绍
  • Kohana框架的安装及部署
  • 无重复字符的最长子串 Golang leecode_3
  • Vue项目的学习一
  • k8s备份
  • python自己造轮子使用
  • Elastic stack8.10.4搭建、启用安全认证,启用https,TLS,SSL 安全配置详解
  • 解决npm报错Error: error:0308010C:digital envelope routines::unsupported
  • 高防IP是什么?有什么优势?
  • php费尔康框架phalcon(费尔康)框架学习笔记
  • StartUML的基本使用
  • 飞天使-django概念之urls
  • MongoDB分片集群搭建
  • modbus报文
  • flutter报错: library “libflutter.so“ not found
  • MR混合现实情景实训教学系统模拟历史情景
  • 计算机视觉的应用16-基于pytorch框架搭建的注意力机制,在汽车品牌与型号分类识别的应用
  • Flutter 实现 Android CollapsingToolbarLayout折叠布局效果
  • 数据库管理-第116期 Oracle Exadata 06-ESS-下(202301114)