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.capacitynumber否Infinity历史记录容量
options.cloneboolean否true是否深度克隆值

返回值 ​

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

工作原理 ​

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

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

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