diff --git a/packages/vant/src/composables/use-refs.ts b/packages/vant/src/composables/use-refs.ts index caf6e43d2..6fb8e4f58 100644 --- a/packages/vant/src/composables/use-refs.ts +++ b/packages/vant/src/composables/use-refs.ts @@ -2,13 +2,19 @@ import { ref, Ref, onBeforeUpdate } from 'vue'; export function useRefs() { const refs = ref([]) as Ref; + const cache: Array<(el: unknown) => void> = []; onBeforeUpdate(() => { refs.value = []; }); - const setRefs = (index: number) => (el: unknown) => { - refs.value[index] = el as T; + const setRefs = (index: number) => { + if (!cache[index]) { + cache[index] = (el: unknown) => { + refs.value[index] = el as T; + }; + } + return cache[index]; }; return [refs, setRefs] as const;