antd-mobile
Version:
<div align="center">
25 lines (24 loc) • 706 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
// 监听点击组件外部的事件
function useClickOutside(handler, ref) {
(0, _react.useEffect)(() => {
function handleClick(event) {
if (!ref.current || ref.current.contains(event.target)) {
return;
}
handler(event);
}
// 在捕获阶段监听,以确保在事件被阻止传播之前触发
document.addEventListener('click', handleClick, true);
return () => {
document.removeEventListener('click', handleClick, true);
};
}, [handler, ref]);
}
var _default = useClickOutside;
exports.default = _default;