UNPKG

@react-hookz/web

Version:

React hooks done right, for browser and SSR.

14 lines (13 loc) 588 B
import { useCallback } from 'react'; import { useSafeState } from "../useSafeState/useSafeState.js"; import { useSyncedRef } from "../useSyncedRef/useSyncedRef.js"; /** * Like `useState` but instead of raw state, state getter returned. `useSafeState` is * used underneath. */ export function useFunctionalState(initialState) { var _a = useSafeState(initialState), state = _a[0], setState = _a[1]; var stateRef = useSyncedRef(state); // eslint-disable-next-line react-hooks/exhaustive-deps return [useCallback(function () { return stateRef.current; }, []), setState]; }