@gravity-ui/uikit
Version: 
Gravity UI base styling and components
21 lines (20 loc) • 726 B
JavaScript
import * as React from 'react';
import { isFunction } from "../../../components/utils/typeCheckers.js";
export function useStateWithCallback(initialValue, callback) {
    const [state, setState] = React.useState(initialValue);
    const setWithCallback = React.useCallback((nextValue) => {
        if (isFunction(nextValue)) {
            setState((previousState) => {
                const newState = nextValue(previousState);
                callback?.(newState);
                return newState;
            });
        }
        else {
            callback?.(nextValue);
            setState(nextValue);
        }
    }, [callback]);
    return [state, setWithCallback];
}
//# sourceMappingURL=useStateWithCallback.js.map