UNPKG

890 BJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5var _react = require("react");
6var _useMounted = _interopRequireDefault(require("./useMounted"));
7function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8/**
9 * `useSafeState` takes the return value of a `useState` hook and wraps the
10 * setter to prevent updates onces the component has unmounted. Can used
11 * with `useMergeState` and `useStateAsync` as well
12 *
13 * @param state The return value of a useStateHook
14 *
15 * ```ts
16 * const [show, setShow] = useSafeState(useState(true));
17 * ```
18 */
19
20function useSafeState(state) {
21 const isMounted = (0, _useMounted.default)();
22 return [state[0], (0, _react.useCallback)(nextState => {
23 if (!isMounted()) return;
24 return state[1](nextState);
25 }, [isMounted, state[1]])];
26}
27var _default = useSafeState;
28exports.default = _default;
\No newline at end of file