From 6d6302725fe669ef65cb142d433237d5c3d4397b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeff=20Yang=20=28=E6=A5=8A=E5=BE=B7=E8=AA=A0=29?= Date: Thu, 8 Jun 2023 01:36:58 +0630 Subject: [PATCH] fix(useCloned): check for getter function to watch (#3142) --- packages/core/useCloned/index.test.ts | 12 ++++++++++++ packages/core/useCloned/index.ts | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/core/useCloned/index.test.ts b/packages/core/useCloned/index.test.ts index 0c68236c68e..352c2bbd196 100644 --- a/packages/core/useCloned/index.test.ts +++ b/packages/core/useCloned/index.test.ts @@ -29,6 +29,18 @@ describe('useCloned', () => { expect(cloned.value).toEqual(data.value) }) + it('works with getter function', async () => { + const data = ref({ test: 'test' }) + + const { cloned } = useCloned(() => data.value) + + data.value.test = 'success' + + await nextTick() + + expect(cloned.value).toEqual(data.value) + }) + it('works with refs and manual sync', async () => { const data = ref({ test: 'test' }) diff --git a/packages/core/useCloned/index.ts b/packages/core/useCloned/index.ts index 4f2b6bb4865..b573216d2ce 100644 --- a/packages/core/useCloned/index.ts +++ b/packages/core/useCloned/index.ts @@ -53,7 +53,7 @@ export function useCloned( cloned.value = clone(toValue(source)) } - if (!manual && isRef(source)) { + if (!manual && (isRef(source) || typeof source === 'function')) { watch(source, sync, { ...options, deep,