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,