UNPKG

use-form

Version:
36 lines (35 loc) 1.24 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; exports.__esModule = true; var nest_deep_1 = require("nest-deep"); var react_1 = require("react"); var isEqual_1 = __importDefault(require("../helpers/isEqual")); function useSubscription(_a) { var getState = _a.getState, subscribe = _a.subscribe; var _b = react_1.useState(getState()), state = _b[0], setState = _b[1]; react_1.useEffect(function () { var didUnsubscribe = false; var checkForUpdates = function () { if (didUnsubscribe) { return; } var nextState = getState(); return setState(function (prevState) { if (isEqual_1["default"](nest_deep_1.flatten(state), nest_deep_1.flatten(nextState))) { return prevState; } return nextState; }); }; checkForUpdates(); var unsubscribe = subscribe(checkForUpdates); return function () { didUnsubscribe = true; unsubscribe(); }; }, [subscribe]); return state; } exports["default"] = useSubscription;