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

vue3项目中如何动态循环设置ref并获取使用

前言:vue2可通过ref来获取当前的dom,但是vue3有个问题,就是必须定义ref的变量名,才能使用;倘若有多个ref,一个个去定义未免过于繁琐,还有一种情况就是dom是使用v-for循环出来的,那么ref也就不确定了,无法提前定义。

解决方法1:

  • 这是使用v-for循环出来的dom,ref通过index下标来命名,
<div
  v-for="(item, index) in dataList"
  :key="item.id"
>
  <mine-info
    :ref="el => getMineRef(el, index)"
    :title="item.title"
    :data="item.data"
  ></mine-info>
</div>
  • 此时mineRefList里面放的就是所有ref
const mineRefList = ref<HTMLElement[]>([]);
const getMineRef = (el:any, index:number) => {
  if (el) {
    mineRefList .value[index] = el; 
  }
};
  • 使用forEach循环去取就行,这里的 item 就是通过ref拿到的 dom元素。可以操作上面定义的变量或方法
mineRefList.value?.forEach((item: any) => {
    console.log(item)
});

解决方法2: 

         注意:与上面略相似,但是用push可能会造成ref还没渲染完得到null的情况,所以最好还是上面那样写

<div
  v-for="(item, index) in dataList"
  :key="item.id"
>
  <mine-info
    :ref="getMineRef"
    :title="item.title"
    :data="item.data"
  ></mine-info>
</div>


let mineRefList = ref<HTMLElement[]>([]);
const getMineRef = (el:any) => {
  if (el) {
    mineRefList.value.push(el);
  }
};


mineRefList.value?.forEach((item: any) => {
    console.log(item)
});


http://www.kler.cn/a/298441.html

相关文章:

  • 企业级PHP异步RabbitMQ协程版客户端 2.0 正式发布
  • Linux标准IOday3
  • 《解锁计算机视觉智慧:编程实现图片场景文字描述的开源宝藏》
  • 机器人技术:ModbusTCP转CCLINKIE网关应用
  • 监听器与RBAC权限模型
  • 什么是网络安全攻防演练,即红蓝对抗?
  • STM32看门狗
  • 2.1ceph集群部署准备-硬件及拓扑
  • 如何压缩pdf?2024帮助你轻松压缩pdf软件
  • 【自用14】C++俄罗斯方块-思路复盘4-此游戏更新完结
  • c++的静态成员
  • 诗风秦韵诗词学习画廊发展“1+6步走”
  • 详解BMP图片格式以及关于Verilog图像处理的仿真环境搭建
  • HTTP 三、http在springboot中得应用
  • 华为 HCIP-Datacom H12-821 题库 (12)
  • Retrieval-based-Voice-Conversion-WebUI模型构建指南
  • 【Hadoop|HDFS篇】HDFS的读写流程
  • AI对未来教育领域的改变!如何使用ChatGPT,一个高效提问的指令构建模型,通过ChatGPT有效提高学习效率
  • 启明云端WT0132C5-S6模组乐鑫ESP32-C5芯片应用,设备联网开发新选择
  • 负载均衡调度器--LVS
  • ElasticSearch精要
  • 有效寻找潜在客户的五个方法
  • 完整的数仓能力,ByConity 1.0 版本发布!
  • 如何实现过滤器、拦截器和全局异常捕获?
  • 低代码平台中的统一认证与单点登录(SSO):实现简化与安全的用户管理
  • 第一个搭建SpringBoot项目(连接mysql)