UNPKG

@raulpesilva/re-state

Version:

easy way to create a shared state to the entire application

37 lines (27 loc) 995 B
"use strict"; exports.__esModule = true; exports.useReStateSelector = useReStateSelector; var _react = require("react"); var _utils = require("./utils"); var _store = require("./store"); var _useIsomorphicLayoutEffect = require("./useIsomorphicLayoutEffect"); function useReStateSelector(selector, isEquals) { if (isEquals === void 0) { isEquals = _utils.shallowEqual; } var _useState = (0, _react.useState)(_store.store.getMany(selector)), selectorValue = _useState[0], setSelectorValue = _useState[1]; (0, _react.useDebugValue)(selectorValue); (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () { var unSub = _store.store.subscribeSelector(function (prevStore, newStore) { var prevSelection = selector(prevStore); var newSelection = selector(newStore); if (!isEquals(prevSelection, newSelection)) { setSelectorValue(newSelection); } }); return unSub; }, [selector]); return selectorValue; }