ht_hooks
Version:
ht React 业务 Hooks
26 lines (25 loc) • 1.11 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _react = require("react");
var _useLatest = _interopRequireDefault(require("../useLatest"));
var _utils = require("../utils");
var _isDev = _interopRequireDefault(require("../utils/isDev"));
var useUnmount = function useUnmount(fn) {
if (_isDev["default"]) {
if (!(0, _utils.isFunction)(fn)) {
console.error("useUnmount expected parameter is a function, got ".concat((0, _typeof2["default"])(fn))); //这个报错是因为useUnmount的参数必须是一个函数
}
}
var fnRef = (0, _useLatest["default"])(fn); //!使用useLatest保存fn,实时更新最新的fn,且能获取到最新的fn不落入闭包陷阱
(0, _react.useEffect)(function () {
return function () {
fnRef.current(); //!调用useEffect实现卸载时执行
};
}, []);
};
var _default = exports["default"] = useUnmount;