useMutationObserver
function useMutationObserver<E extends HTMLElement>(
options: MutationObserverHookOptions<E>
): RefCallback<E>;
The useMutationObserver
hook can be used to interact with the
Mutation Observer API
within React components.
Example Usage
The useMutationObserver
hook requires an onUpdate
handler with any optional
Mutation Observer attributes and returns a ref that should be provided to the
target element.
import { useMutationObserver } from "@react-md/core/useMutationObserver";
import { type HTMLAttributes, type ReactElement, useCallback } from "react";
function Example(props: HTMLAttributes<HTMLDivElement>): ReactElement {
const { children, ...remaining } = props;
const targetRef = useMutationObserver({
subtree: true,
attributes: true,
childList: true,
onUpdate: useCallback((mutation) => {
switch (mutation.type) {
case "childList":
console.log("A child node has been added or removed");
break;
case "attributes":
console.log(`The ${mutation.attributeName} attribute was modified`);
break;
}
}, []),
});
return (
<div {...remaining} ref={targetRef}>
{children}
</div>
);
}
Parameters
options
- An object with the following definition:
export interface MutationObserverHookOptions<E extends HTMLElement>
extends MutationObserverInit {
ref?: Ref<E>;
/**
* @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe#options
* @defaultValue `!childList && !attributes && !characterData`
*/
disabled?: boolean;
onObserved: (mutation: MutationRecord) => void;
}
Returns
A RefCallback<E>
to be provided to the element to observer.