linkmore-design
Version:
🌈 🚀lm组件库。🚀
21 lines (18 loc) • 637 B
JavaScript
import { useCallback, useLayoutEffect, useRef } from 'react';
// * 解决useCallback的依赖传导问题,存储事件
function useEvent(handler) {
var handlerRef = useRef(null);
// 同步,运行时间在布局前
useLayoutEffect(function () {
handlerRef.current = handler;
});
// 存储方法函数
return useCallback(function () {
var fn = handlerRef.current;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return fn === null || fn === void 0 ? void 0 : fn.apply(void 0, args);
}, []);
}
export default useEvent;