@react-hookz/web
Version:
React hooks done right, for browser and SSR.
18 lines (17 loc) • 788 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useFunctionalState = void 0;
var react_1 = require("react");
var useSafeState_1 = require("../useSafeState/useSafeState");
var useSyncedRef_1 = require("../useSyncedRef/useSyncedRef");
/**
* Like `useState` but instead of raw state, state getter returned. `useSafeState` is
* used underneath.
*/
function useFunctionalState(initialState) {
var _a = (0, useSafeState_1.useSafeState)(initialState), state = _a[0], setState = _a[1];
var stateRef = (0, useSyncedRef_1.useSyncedRef)(state);
// eslint-disable-next-line react-hooks/exhaustive-deps
return [(0, react_1.useCallback)(function () { return stateRef.current; }, []), setState];
}
exports.useFunctionalState = useFunctionalState;