Match-id-17719191991ce335a66dd99e1b57c5e119685a4b

This commit is contained in:
* 2023-06-07 17:25:20 +08:00
parent 914425a545
commit 75dabdb169
9 changed files with 42 additions and 2 deletions

View File

@ -69,6 +69,7 @@ import {
} from './src/dom/DOMExternal';
import { syncUpdates as flushSync } from './src/renderer/TreeBuilder';
import { toRaw } from './src/horizonx/proxy/ProxyHandler';
const Horizon = {
Children,
@ -157,6 +158,7 @@ export {
clearStore,
reduxAdapter,
watch,
toRaw,
// 兼容ReactIs
isFragment,
isElement,

View File

@ -13,4 +13,4 @@
* See the Mulan PSL v2 for more details.
*/
export const OBSERVER_KEY = '_horizonObserver';
export const OBSERVER_KEY = typeof Symbol === 'function' ? Symbol('_horizonObserver') : '_horizonObserver';

View File

@ -52,7 +52,15 @@ export function createProxy(rawObj: any, listener: { current: (...args) => any }
let observer: IObserver = getObserver(rawObj);
if (!observer) {
observer = isHookObserver ? new Observer() : new HooklessObserver();
rawObj[OBSERVER_KEY] = observer;
if (typeof OBSERVER_KEY === 'string') {
Object.defineProperty(rawObj, OBSERVER_KEY, {
configurable: false,
enumerable: false,
value: observer,
});
} else {
rawObj[OBSERVER_KEY] = observer;
}
}
hookObserverMap.set(rawObj, isHookObserver);
@ -96,3 +104,7 @@ export function createProxy(rawObj: any, listener: { current: (...args) => any }
return proxyObj;
}
export function toRaw<T>(observed: T): T {
return observed && (observed)['_rawValue'];
}

View File

@ -137,6 +137,10 @@ export function createArrayProxy(rawObj: any[], listener: { current: (...args) =
return objectGet(rawObj, key, receiver);
}
if (key === '_rawValue') {
return rawObj;
}
return Reflect.get(rawObj, key, receiver);
}

View File

@ -388,6 +388,10 @@ export function createMapProxy(
};
}
if (key === '_rawValue') {
return rawObj;
}
return Reflect.get(rawObj, key, receiver);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -78,6 +78,10 @@ export function createObjectProxy<T extends object>(
};
}
if (key === '_rawValue') {
return rawObj;
}
observer.useProp(key);
const value = Reflect.get(rawObj, key, receiver);

View File

@ -179,6 +179,11 @@ export function createSetProxy<T extends object>(
};
};
}
if (key === '_rawValue') {
return rawObj;
}
return Reflect.get(rawObj, key, receiver);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -96,6 +96,10 @@ export function createWeakMapProxy(
};
}
if (key === '_rawValue') {
return rawObj;
}
return Reflect.get(rawObj, key, receiver);
}

View File

@ -60,6 +60,11 @@ export function createWeakSetProxy<T extends object>(
};
};
}
if (key === '_rawValue') {
return rawObj;
}
return Reflect.get(rawObj, key, receiver);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////