valtio
Version:
🧙 Valtio makes proxy-state simple for React and Vanilla
20 lines (17 loc) • 472 B
JavaScript
import { useLayoutEffect } from 'react';
import { useSnapshot } from 'valtio/react';
const DUMMY_SYMBOL = /* @__PURE__ */ Symbol();
function useProxy(proxy, options) {
const snapshot = useSnapshot(proxy, options);
snapshot[DUMMY_SYMBOL];
let isRendering = true;
useLayoutEffect(() => {
isRendering = false;
});
return new Proxy(proxy, {
get(target, prop) {
return isRendering ? snapshot[prop] : target[prop];
}
});
}
export { useProxy };