Match-id-17719191991ce335a66dd99e1b57c5e119685a4b
This commit is contained in:
parent
914425a545
commit
75dabdb169
|
@ -69,6 +69,7 @@ import {
|
||||||
} from './src/dom/DOMExternal';
|
} from './src/dom/DOMExternal';
|
||||||
|
|
||||||
import { syncUpdates as flushSync } from './src/renderer/TreeBuilder';
|
import { syncUpdates as flushSync } from './src/renderer/TreeBuilder';
|
||||||
|
import { toRaw } from './src/horizonx/proxy/ProxyHandler';
|
||||||
|
|
||||||
const Horizon = {
|
const Horizon = {
|
||||||
Children,
|
Children,
|
||||||
|
@ -157,6 +158,7 @@ export {
|
||||||
clearStore,
|
clearStore,
|
||||||
reduxAdapter,
|
reduxAdapter,
|
||||||
watch,
|
watch,
|
||||||
|
toRaw,
|
||||||
// 兼容ReactIs
|
// 兼容ReactIs
|
||||||
isFragment,
|
isFragment,
|
||||||
isElement,
|
isElement,
|
||||||
|
|
|
@ -13,4 +13,4 @@
|
||||||
* See the Mulan PSL v2 for more details.
|
* See the Mulan PSL v2 for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const OBSERVER_KEY = '_horizonObserver';
|
export const OBSERVER_KEY = typeof Symbol === 'function' ? Symbol('_horizonObserver') : '_horizonObserver';
|
||||||
|
|
|
@ -52,8 +52,16 @@ export function createProxy(rawObj: any, listener: { current: (...args) => any }
|
||||||
let observer: IObserver = getObserver(rawObj);
|
let observer: IObserver = getObserver(rawObj);
|
||||||
if (!observer) {
|
if (!observer) {
|
||||||
observer = isHookObserver ? new Observer() : new HooklessObserver();
|
observer = isHookObserver ? new Observer() : new HooklessObserver();
|
||||||
|
if (typeof OBSERVER_KEY === 'string') {
|
||||||
|
Object.defineProperty(rawObj, OBSERVER_KEY, {
|
||||||
|
configurable: false,
|
||||||
|
enumerable: false,
|
||||||
|
value: observer,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
rawObj[OBSERVER_KEY] = observer;
|
rawObj[OBSERVER_KEY] = observer;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
hookObserverMap.set(rawObj, isHookObserver);
|
hookObserverMap.set(rawObj, isHookObserver);
|
||||||
|
|
||||||
|
@ -96,3 +104,7 @@ export function createProxy(rawObj: any, listener: { current: (...args) => any }
|
||||||
|
|
||||||
return proxyObj;
|
return proxyObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function toRaw<T>(observed: T): T {
|
||||||
|
return observed && (observed)['_rawValue'];
|
||||||
|
}
|
||||||
|
|
|
@ -137,6 +137,10 @@ export function createArrayProxy(rawObj: any[], listener: { current: (...args) =
|
||||||
return objectGet(rawObj, key, receiver);
|
return objectGet(rawObj, key, receiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key === '_rawValue') {
|
||||||
|
return rawObj;
|
||||||
|
}
|
||||||
|
|
||||||
return Reflect.get(rawObj, key, receiver);
|
return Reflect.get(rawObj, key, receiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -388,6 +388,10 @@ export function createMapProxy(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key === '_rawValue') {
|
||||||
|
return rawObj;
|
||||||
|
}
|
||||||
|
|
||||||
return Reflect.get(rawObj, key, receiver);
|
return Reflect.get(rawObj, key, receiver);
|
||||||
}
|
}
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -78,6 +78,10 @@ export function createObjectProxy<T extends object>(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key === '_rawValue') {
|
||||||
|
return rawObj;
|
||||||
|
}
|
||||||
|
|
||||||
observer.useProp(key);
|
observer.useProp(key);
|
||||||
|
|
||||||
const value = Reflect.get(rawObj, key, receiver);
|
const value = Reflect.get(rawObj, key, receiver);
|
||||||
|
|
|
@ -179,6 +179,11 @@ export function createSetProxy<T extends object>(
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key === '_rawValue') {
|
||||||
|
return rawObj;
|
||||||
|
}
|
||||||
|
|
||||||
return Reflect.get(rawObj, key, receiver);
|
return Reflect.get(rawObj, key, receiver);
|
||||||
}
|
}
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -96,6 +96,10 @@ export function createWeakMapProxy(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key === '_rawValue') {
|
||||||
|
return rawObj;
|
||||||
|
}
|
||||||
|
|
||||||
return Reflect.get(rawObj, key, receiver);
|
return Reflect.get(rawObj, key, receiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,11 @@ export function createWeakSetProxy<T extends object>(
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key === '_rawValue') {
|
||||||
|
return rawObj;
|
||||||
|
}
|
||||||
|
|
||||||
return Reflect.get(rawObj, key, receiver);
|
return Reflect.get(rawObj, key, receiver);
|
||||||
}
|
}
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Reference in New Issue