UNPKG

692 BJavaScriptView Raw
1import { useMemoizedFn } from 'ahooks';
2import { useEffect } from 'react';
3export function observe(element, options, callback) {
4 if (element && typeof MutationObserver !== 'undefined') {
5 let observer = new MutationObserver(() => {
6 callback();
7 });
8 observer.observe(element, options);
9 // Return cleanup function
10 return () => {
11 if (observer) {
12 observer.disconnect();
13 observer = null;
14 }
15 };
16 }
17 return () => {};
18}
19export function useMutationEffect(effect, targetRef, options) {
20 const fn = useMemoizedFn(effect);
21 useEffect(() => {
22 const cleanup = observe(targetRef.current, options, fn);
23 return cleanup;
24 }, [targetRef]);
25}
\No newline at end of file