UNPKG

valtio

Version:

🧙 Valtio makes proxy-state simple for React and Vanilla

20 lines (17 loc) • 472 B
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 };