UNPKG

@saber2pr/react

Version:

react in Typescript.

40 lines (39 loc) 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* * @Author: saber2pr * @Date: 2019-12-10 20:01:34 * @Last Modified by: saber2pr * @Last Modified time: 2019-12-10 22:00:33 */ var ReactFiberHooks_1 = require("../react-reconciler/ReactFiberHooks"); var ReactContext_1 = require("./ReactContext"); var SuspenseContext = ReactContext_1.createContext({}); var lazy = function (lazyComponent) { return function (props) { var Context = ReactFiberHooks_1.useContext(SuspenseContext); var fallback = Context.fallback, result = Context.result; var _a = ReactFiberHooks_1.useState(fallback), state = _a[0], setState = _a[1]; ReactFiberHooks_1.useEffect(function () { //TODO: when it will unmount, cancel the render. if (result) { setState(result); } else { lazyComponent(props).then(function (_a) { var render = _a.default; var result = render(); setState(result); Context.result = result; }); } }, [Context.fallback]); return state; }; }; exports.lazy = lazy; var Suspense = function (_a) { var fallback = _a.fallback, children = _a.children; var Context = ReactFiberHooks_1.useContext(SuspenseContext); Context.fallback = fallback; return children; }; exports.Suspense = Suspense;