|
@@ -12,14 +12,12 @@ export function useTemplateRef<T = unknown, Keys extends string = string>(
|
|
|
const r = shallowRef(null)
|
|
const r = shallowRef(null)
|
|
|
if (i) {
|
|
if (i) {
|
|
|
const refs = i.refs === EMPTY_OBJ ? (i.refs = {}) : i.refs
|
|
const refs = i.refs === EMPTY_OBJ ? (i.refs = {}) : i.refs
|
|
|
- let desc: PropertyDescriptor | undefined
|
|
|
|
|
- if (
|
|
|
|
|
- __DEV__ &&
|
|
|
|
|
- (desc = Object.getOwnPropertyDescriptor(refs, key)) &&
|
|
|
|
|
- !desc.configurable
|
|
|
|
|
- ) {
|
|
|
|
|
- warn(`useTemplateRef('${key}') already exists.`)
|
|
|
|
|
|
|
+ const refsCache =
|
|
|
|
|
+ i.refsCache || (i.refsCache = new Map<string, ShallowRef>())
|
|
|
|
|
+ if (refsCache.has(key)) {
|
|
|
|
|
+ return refsCache.get(key)!
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ refsCache.set(key, r)
|
|
|
Object.defineProperty(refs, key, {
|
|
Object.defineProperty(refs, key, {
|
|
|
enumerable: true,
|
|
enumerable: true,
|
|
|
get: () => r.value,
|
|
get: () => r.value,
|