immer
immer copied to clipboard
support property produce hook
immer use Reflect.ownKeys to loop all property and developer cannot do anything. can we support hooks during property and value edit?
https://github.com/immerjs/immer/blob/e2d222bd4fb26abded04075c936290715e9ee335/src/utils/common.ts#L75
for example:
const child = {
id: 1,
name:"1",
children: null
}
const parentNode = {
id: 1,
name:"1",
children: [child],
_parent: null
}
child._parent = parentNode
when produce next state, _parent cause circle refer problem and throw error.
i know immer have the rule Immer only supports unidirectional trees but can we do like this?
function user_defined_iter(key, value, obj, basic_iter){
if(key === '_parent'){
obj[key] = value
}else {
basic_iter(key, obj[key], obj)
}
}
Reflect.ownKeys(obj).forEach(key => {
user_defined_iter(key, obj[key], obj), iter)
})
current temporary way is to loop all nodes but if the tree is too large add deep, it may cause another performance error.