]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(useTemplateRef): handle useTemplateRef edge case with vFor
authordaiwei <daiwei521@126.com>
Fri, 17 Jan 2025 01:17:28 +0000 (09:17 +0800)
committerdaiwei <daiwei521@126.com>
Fri, 17 Jan 2025 01:17:28 +0000 (09:17 +0800)
packages/runtime-core/src/rendererTemplateRef.ts

index ca21030dc35d851a7c293e4d1dea84b3c8eacc7d..ae746fe0c8371579f34c01763796af223a1af71f 100644 (file)
@@ -11,7 +11,7 @@ import {
 } from '@vue/shared'
 import { isAsyncWrapper } from './apiAsyncComponent'
 import { warn } from './warning'
-import { isRef, toRaw } from '@vue/reactivity'
+import { isRef, shallowReactive, toRaw } from '@vue/reactivity'
 import { ErrorCodes, callWithErrorHandling } from './errorHandling'
 import type { SchedulerJob } from './scheduler'
 import { queuePostRenderEffect } from './renderer'
@@ -125,12 +125,12 @@ export function setRef(
           } else {
             if (!isArray(existing)) {
               if (_isString) {
-                refs[ref] = [refValue]
+                refs[ref] = shallowReactive([refValue])
                 if (canSetSetupRef(ref)) {
                   setupState[ref] = refs[ref]
                 }
               } else {
-                ref.value = [refValue]
+                ref.value = shallowReactive([refValue])
                 if (rawRef.k) refs[rawRef.k] = ref.value
               }
             } else if (!existing.includes(refValue)) {