1234567891011121314151617181920212223242526272829303132333435 |
- "use strict";
-
- exports.__esModule = true;
- exports.default = useTimeout;
-
- var _react = require("react");
-
- var _useWillUnmount = _interopRequireDefault(require("./useWillUnmount"));
-
- var _useMounted = _interopRequireDefault(require("./useMounted"));
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- /**
- * Returns a controller object for setting a timeout that is properly cleaned up
- * once the component unmounts. New timeouts cancel and replace existing ones.
- */
- function useTimeout() {
- var isMounted = (0, _useMounted.default)();
- var handle = (0, _react.useRef)();
-
- var clear = function clear() {
- return clearTimeout(handle.current);
- };
-
- (0, _useWillUnmount.default)(clear);
- return {
- set: function set(fn, ms) {
- if (!isMounted()) return;
- clear();
- handle.current = setTimeout(fn, ms);
- },
- clear: clear
- };
- }
|