diffObject
使用 deep-diff 比较两个对象的差异,并对变化部分调用回调函数。
@movk-repo/shared/utils/object/diffobject
参数
ts
function diffObject<T>(
cur: T,
prev: T,
cb: (changes: Array<{ keyPath: string, value: any }>) => void,
nested?: boolean | ((keyPath: string) => boolean)
): void
cur
当前对象,作为最新的比较对象。
- 类型:
T
- 必填:
true
prev
前一个对象,作为对比对象。
- 类型:
T
- 必填:
true
cb
差异回调函数,接收一个包含所有变化的对象数组。每个对象包含 keyPath
和 value
。
- 类型:
(changes: Array<{ keyPath: string, value: any }>) => void
- 必填:
true
nested
是否需要嵌套监听:
- 类型:
boolean | ((keyPath: string) => boolean)
- 必填:
false
- 默认值:
false
示例
ts
import { diffObject } from '@movk-repo/shared'
const curObj = { a: 1, b: { c: 2 } }
const prevObj = { a: 1, b: { c: 3 } }
diffObject(curObj, prevObj, (changes) => {
console.log(changes)
}, keyPath => keyPath.startsWith('b.'))