useResizeObserver
监听一个或多个元素尺寸变化,并在缺少 ResizeObserver 时回退到窗口 resize。
签名
ts
function useResizeObserver<T extends Element>(
targets: readonly ResolvableTarget<T>[],
callback: (entries: ResizeObserverEntry[], observer: ResizeObserver | null) => void,
options?: ResizeObserverOptions & {
enabled?: boolean;
fallbackToWindow?: boolean;
},
): void;基本用法
关键行为
- targets 是目标数组,单个目标也需要写成
[target]。 - targets 中的每一项支持 DOM 对象、React ref、
null和undefined。 - 回调变化时不会重新创建观察器,内部会调用最新回调。
- 缺少
ResizeObserver且fallbackToWindow未关闭时,会监听window.resize并以observer: null调用回调。
注意事项
enabled: false会跳过观察并清理已创建的观察器。- targets 中重复的元素只会被观察一次。