UNPKG

rc-mutate-observer-modern

Version:
26 lines 757 B
import canUseDom from "rc-util/es/Dom/canUseDom"; import * as React from 'react'; const defaultOptions = { subtree: true, childList: true, attributeFilter: ['style', 'class'] }; export default function useMutateObserver(nodeOrList, callback, options = defaultOptions) { React.useEffect(() => { if (!canUseDom() || !nodeOrList) { return; } let instance; const nodeList = Array.isArray(nodeOrList) ? nodeOrList : [nodeOrList]; if ('MutationObserver' in window) { instance = new MutationObserver(callback); nodeList.forEach(element => { instance.observe(element, options); }); } return () => { instance?.takeRecords(); instance?.disconnect(); }; }, [options, nodeOrList]); }