resize observer: only return new dimensions if they've actually changed

This commit is contained in:
Josh Hawkins 2024-12-22 12:26:02 -06:00
parent de8d06b119
commit 9e63194b82

View File

@ -17,7 +17,15 @@ export function useResizeObserver(...refs: RefType[]) {
() => () =>
new ResizeObserver((entries) => { new ResizeObserver((entries) => {
window.requestAnimationFrame(() => { window.requestAnimationFrame(() => {
setDimensions(entries.map((entry) => entry.contentRect)); setDimensions((prevDimensions) => {
const newDimensions = entries.map((entry) => entry.contentRect);
if (
JSON.stringify(prevDimensions) !== JSON.stringify(newDimensions)
) {
return newDimensions;
}
return prevDimensions;
});
}); });
}), }),
[], [],