UNPKG

acud

Version:

acg react 组件库

36 lines • 1.39 kB
/* eslint-disable no-undef */ import canUseDom from "rc-util/es/Dom/canUseDom"; import * as React from 'react'; var defaultOptions = { subtree: true, childList: true, attributeFilter: ['style', 'class'] }; /** * 使用Mutation Observer API监听节点或节点列表的变动。 * * @param nodeOrList - 要观察的节点或节点列表。 * @param callback - 在节点或节点列表上发生变化时调用的回调函数。 * @param options - 配置 MutationObserver 的选项,默认值为 `defaultOptions`。 * @returns 返回一个清理函数,用于停止和销毁 MutationObserver 对象。 */ export default function useMutateObserver(nodeOrList, callback) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultOptions; React.useEffect(function () { if (!canUseDom() || !nodeOrList) { return; } var instance; var nodeList = Array.isArray(nodeOrList) ? nodeOrList : [nodeOrList]; if ('MutationObserver' in window) { instance = new MutationObserver(callback); nodeList.forEach(function (element) { instance.observe(element, options); }); } return function () { instance === null || instance === void 0 ? void 0 : instance.takeRecords(); instance === null || instance === void 0 ? void 0 : instance.disconnect(); }; }, [options, nodeOrList]); }