Skip to content

useCloned

创建源数据的响应式克隆,支持自定义克隆函数和手动/自动同步。


函数签名

ts
function useCloned<T>(
  source: MaybeRefOrGetter<T>,
  options?: UseClonedOptions,
): {
  cloned: Ref<T>
  sync: () => void
}

基础用法

参数

参数说明类型默认值
source源数据(支持 ref / getter / 原始值)MaybeRefOrGetter<T>
options配置项UseClonedOptions{}

UseClonedOptions

继承 WatchOptions,额外支持:

参数说明类型默认值
clone自定义克隆函数(source: T) => TJSON.parse(JSON.stringify())
manual是否手动同步(true 时不自动 watch 源变化)booleanfalse
deep深度监听booleantrue
immediate立即执行booleantrue

返回值

属性说明类型
cloned克隆后的响应式数据Ref<T>
sync手动同步函数,调用后将源数据克隆到 cloned() => void

代码示例

ts
import { ref } from 'vue'
import { useCloned } from 'ljf-hooks'

const source = ref({ name: '张三', age: 20 })
const { cloned, sync } = useCloned(source)

// 自动同步:源变化时 cloned 自动更新
source.value.name = '李四'
// cloned.value.name === '李四'

// 手动模式
const { cloned: manualCloned, sync: manualSync } = useCloned(source, { manual: true })
source.value.name = '王五'
// manualCloned 不会自动更新
manualSync() // 手动同步