深度代理

This commit is contained in:
2023-10-07 00:38:09 +08:00
parent 4a25e83d14
commit e9f891cf15
1 changed files with 17 additions and 0 deletions

View File

@ -99,3 +99,20 @@ export function Dialog(options) {
element.onremove = () => observer.disconnect()
return element
}
// 深度代理, 用于监听数据的变化
export function useProxy(obj, callback) {
return new Proxy(obj, {
get(target, key) {
if (typeof target[key] === 'object' && target[key] !== null) {
return useProxy(target[key], callback)
}
return target[key]
},
set(target, key, value) {
target[key] = value
callback(target, key, value)
return true
}
})
}