UNPKG

@restart/hooks

Version:

A set of utility and general-purpose React hooks.

28 lines (26 loc) 890 B
"use strict"; exports.__esModule = true; exports.default = void 0; var _react = require("react"); var _useMounted = _interopRequireDefault(require("./useMounted")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * `useSafeState` takes the return value of a `useState` hook and wraps the * setter to prevent updates onces the component has unmounted. Can used * with `useMergeState` and `useStateAsync` as well * * @param state The return value of a useStateHook * * ```ts * const [show, setShow] = useSafeState(useState(true)); * ``` */ function useSafeState(state) { const isMounted = (0, _useMounted.default)(); return [state[0], (0, _react.useCallback)(nextState => { if (!isMounted()) return; return state[1](nextState); }, [isMounted, state[1]])]; } var _default = useSafeState; exports.default = _default;