(currentState, {
get(target, key, receiver) {
// todo 把读操作代理到原值上
},
set() {
if...(original, {
// 读操作(代理属性访问)
get(target, key, receiver) {
if (typeof original[key] === '...draftValue[key];
}
// 不存在的,或者值为基本值的现有属性,代理到原值
return Reflect.get(target, key, receiver...(original, {
get(target, key, receiver) {
// 建立proxy到draft值的关联
if (key === INTERNAL_STATE_KEY...,更安全些
而 Immer 正向遍历代理对象树也是一种相当聪明的做法:
When the producer finally ends, it will just walk through the proxy