React 18: Issues with useLayoutEffect causing layout thrashing on complex components
Can someone help me understand I'm migrating some code and I've looked through the documentation and I'm still confused about I'm facing a performance issue with a component that utilizes `useLayoutEffect` in React 18... The component is supposed to measure its dimensions and adjust its layout accordingly. However, I'm experiencing layout thrashing, causing visible flickering when the component mounts and updates. Here's a simplified version of my code: ```javascript import React, { useLayoutEffect, useRef, useState } from 'react'; const MyComponent = () => { const ref = useRef(null); const [size, setSize] = useState({ width: 0, height: 0 }); useLayoutEffect(() => { const updateSize = () => { if (ref.current) { setSize({ width: ref.current.offsetWidth, height: ref.current.offsetHeight, }); } }; updateSize(); window.addEventListener('resize', updateSize); return () => window.removeEventListener('resize', updateSize); }, []); return <div ref={ref} style={{ width: size.width, height: size.height }}>Content here</div>; }; ``` The flickering seems to happen particularly when resizing the window. I have tried switching to `useEffect`, but that causes layout to not update as expected, leading to other issues. I've also tried debouncing the resize event to limit how often `updateSize` is called, but it hasn't resolved the flickering. I am using React 18 with ReactDOM 18 and the latest version of my browser. Is there a recommended pattern or optimization I can implement to handle this better? Any insights on avoiding layout thrashing while using `useLayoutEffect` would be greatly appreciated! This is part of a larger application I'm building. The stack includes Javascript and several other technologies. I'm open to any suggestions. How would you solve this?