UNPKG

react-singleton-hook

Version:
25 lines (23 loc) 864 B
"use strict"; exports.__esModule = true; exports.SingleItemContainer = void 0; var _react = require("react"); var SingleItemContainer = function SingleItemContainer(_ref) { var initValue = _ref.initValue, useHookBody = _ref.useHookBody, applyStateChange = _ref.applyStateChange; var lastState = (0, _react.useRef)(initValue); if (typeof useHookBody !== 'function') { throw new Error("function expected as hook body parameter. got " + typeof useHookBody); } var val = useHookBody(); //useLayoutEffect is safe from SSR perspective because SingleItemContainer should never be rendered on server (0, _react.useLayoutEffect)(function () { if (lastState.current !== val) { lastState.current = val; applyStateChange(val); } }, [applyStateChange, val]); return null; }; exports.SingleItemContainer = SingleItemContainer;