UNPKG

@raulpesilva/re-state

Version:

easy way to create a shared state to the entire application

41 lines (31 loc) 1.12 kB
"use strict"; exports.__esModule = true; exports.useReState = useReState; var _react = require("react"); var _store = require("./store"); var _useIsomorphicLayoutEffect = require("./useIsomorphicLayoutEffect"); function useReState(key, initialValue) { var makeState = (0, _react.useCallback)(function (value) { if (_store.store.has(key)) { return _store.store.get(key); } else { _store.store.setWithoutNotify(key, value); return _store.store.get(key); } }, [key]); var setState = (0, _react.useCallback)(function (newValue) { _store.store.set(key, newValue); }, [key]); var _useState = (0, _react.useState)(makeState(initialValue)), reStateValue = _useState[0], setReStateValue = _useState[1]; (0, _react.useDebugValue)(makeState(initialValue)); (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () { var unSub = _store.store.subscribe(key, function () { setReStateValue(_store.store.get(key)); }); return unSub; }, [initialValue, key]); return [reStateValue, setState]; } useReState.displayName = 'useReState';