UNPKG

@saber2pr/react

Version:

react in Typescript.

34 lines (33 loc) 1.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var shallowEqual_1 = require("../shared/shallowEqual"); var ReactFiberHooks_1 = require("../react-reconciler/ReactFiberHooks"); // omit key `children` in props compared. var pickProps = function (props) { return Object.fromEntries(Object.entries(props).filter(function (_a) { var k = _a[0]; return k !== "children"; })); }; function memo(component, compare) { var Component = function (props) { var newProps = pickProps(props); var prevProps = ReactFiberHooks_1.useRef(null); var result = ReactFiberHooks_1.useRef(null); if (compare) { if (compare(prevProps.current, newProps)) { return result.current; } } else { if (shallowEqual_1.shallowEqual(prevProps.current, newProps)) { return result.current; } } prevProps.current = newProps; result.current = component(props); return result.current; }; return Component; } exports.memo = memo;