Ben Lin
2024-08-20 2e2ec72bdefad3ff51c786721f11b0d8b82d8b1b
packages/hooks/src/useRefs.ts
@@ -1,18 +1,18 @@
import type { Ref } from 'vue';
import type { ComponentPublicInstance, Ref } from 'vue';
import { onBeforeUpdate, shallowRef } from 'vue';
function useRefs(): {
  refs: Ref<HTMLElement[]>;
  setRefs: (index: number) => (el: HTMLElement) => void;
function useRefs<T = HTMLElement>(): {
  refs: Ref<T[]>;
  setRefs: (index: number) => (el: Element | ComponentPublicInstance | null) => void;
} {
  const refs = shallowRef([]) as Ref<HTMLElement[]>;
  const refs = shallowRef([]) as Ref<T[]>;
  onBeforeUpdate(() => {
    refs.value = [];
  });
  const setRefs = (index: number) => (el: HTMLElement) => {
    refs.value[index] = el;
  const setRefs = (index: number) => (el: Element | ComponentPublicInstance | null) => {
    refs.value[index] = el as T;
  };
  return {