vue3 设置动态 ref 并获取

9,530 阅读1分钟

vue3 设置动态 ref 并获取

<template>
  <div v-for="item in list" :ref="(el: refItem) => setRefMap(el, item)" :key="item.name"></div>
</template>

<script setup lang="ts">
import { onMounted } from 'vue'
import type { ComponentPublicInstance } from 'vue';

type refItem = Element | ComponentPublicInstance | null

const list = [
  { name: 'ref1'},
  { name: 'ref2'},
  { name: 'ref3'},
  { name: 'ref4'},
]

const refMap: Record<string, refItem> = {}
const setRefMap = (el: refItem, item: {name: string}) => {
  if (el) {
    refMap[`${item.name}`] = el
  }
}

onMounted(() => {
  console.log(refMap)
})
</script>