123456789101112131415161718192021222324252627282930313233343536373839 |
- "use strict";
-
- exports.__esModule = true;
- exports.default = useMounted;
-
- var _react = require("react");
-
- /**
- * Track whether a component is current mounted. Generally less preferable than
- * properlly canceling effects so they don't run after a component is unmounted,
- * but helpful in cases where that isn't feasible, such as a `Promise` resolution.
- *
- * @returns a function that returns the current isMounted state of the component
- *
- * ```ts
- * const [data, setData] = useState(null)
- * const isMounted = useMounted()
- *
- * useEffect(() => {
- * fetchdata().then((newData) => {
- * if (isMounted()) {
- * setData(newData);
- * }
- * })
- * })
- * ```
- */
- function useMounted() {
- var mounted = (0, _react.useRef)(true);
- var isMounted = (0, _react.useRef)(function () {
- return mounted.current;
- });
- (0, _react.useEffect)(function () {
- return function () {
- mounted.current = false;
- };
- }, []);
- return isMounted.current;
- }
|