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
}参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
source | Ref<T> | 是 | - | 要跟踪的 ref |
options.capacity | number | 否 | Infinity | 历史记录容量 |
options.clone | boolean | 否 | true | 是否深度克隆值 |
返回值
| 类型 | 说明 |
|---|---|
{ history, commit, undo, redo, clear, canUndo, canRedo } | 历史记录控制对象 |
工作原理
与 useRefHistory 类似,但不自动跟踪变化:
- 不监听 ref 的自动变化
- 需要手动调用
commit()保存当前状态到历史记录 undo()/redo()功能与自动版本相同- 提供更精确的控制,避免记录中间状态
适用于需要精确控制保存时机的场景,如表单提交、批量操作等。