Back to Vueuse

useCloned

packages/core/useCloned/index.md

14.3.01.2 KB
Original Source

useCloned

Reactive clone of a ref. By default, it use JSON.parse(JSON.stringify()) to do the clone.

Usage

ts
import { useCloned } from '@vueuse/core'

const original = ref({ key: 'value' })

const { cloned } = useCloned(original)

original.value.key = 'some new value'

console.log(cloned.value.key) // 'value'

Changes to the source are not reflected in the cloned ref immediately. Use { flush: 'sync' } to obtain the updated value without delay.

ts
const { cloned } = useCloned(original, { flush: 'sync' })

original.value.key = 'some new value'

console.log(cloned.value.key) // 'some new value'

Manual cloning

ts
import { useCloned } from '@vueuse/core'

const original = ref({ key: 'value' })

const { cloned, sync } = useCloned(original, { manual: true })

original.value.key = 'manual'

console.log(cloned.value.key) // 'value'

sync()

console.log(cloned.value.key)// 'manual'

Custom Clone Function

Using klona for example:

ts
import { useCloned } from '@vueuse/core'
import { klona } from 'klona'

const original = ref({ key: 'value' })

const { cloned, isModified, sync } = useCloned(original, { clone: klona })