From 8d60697ec193232461217f3102c2ac95e79f8c14 Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 28 Dec 2021 11:46:48 +0800 Subject: [PATCH] perf: caching handlers of useRefs (#10108) --- packages/vant/src/composables/use-refs.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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;