Skip to content

useManualRefHistory

手动控制的 ref 历史记录,需要显式调用 commit 保存快照。

函数签名

typescript
function useManualRefHistory<T>(
  source: Ref<T>,
  options?: ManualRefHistoryOptions
): {
  history: Ref<T[]>
  commit: () => void
  undo: () => void
  redo: () => void
  clear: () => void
  canUndo: Ref<boolean>
  canRedo: Ref<boolean>
}

interface ManualRefHistoryOptions {
  capacity?: number
  clone?: boolean
}

参数

参数名类型必填默认值说明
sourceRef<T>-要跟踪的 ref
options.capacitynumberInfinity历史记录容量
options.clonebooleantrue是否深度克隆值

返回值

类型说明
{ history, commit, undo, redo, clear, canUndo, canRedo }历史记录控制对象

工作原理

useRefHistory 类似,但不自动跟踪变化:

  1. 不监听 ref 的自动变化
  2. 需要手动调用 commit() 保存当前状态到历史记录
  3. undo()/redo() 功能与自动版本相同
  4. 提供更精确的控制,避免记录中间状态

适用于需要精确控制保存时机的场景,如表单提交、批量操作等。