Quiero activar ResizeObserver solo en el cambio de ancho y no usarlo si se cambió la altura. ¿Es posible?
Ejemplo:
const resizeObserver = new ResizeObserver(setLayout); resizeObserver.observe(layout.current); const setLayout = () => {/*do something*/}No hay una función integrada, pero puede crear un contenedor que verifique si (solo) el ancho ha cambiado:
const ro = function($el, cb) { let last = $el.getBoundingClientRect(); const observer = new ResizeObserver(function() { const data = $el.getBoundingClientRect(); if(data.width !== last.width && data.height === last.height) cb(); last = data; }); observer.observe($el); }Entonces úsalo como:
ro(layout.current, setLayout);