UNPKG

@react-hookz/web

Version:

React hooks done right, for browser and SSR.

18 lines (17 loc) 788 B
"use strict"; 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;