(null);
/** Flag to prevent multiple simultaneous resize operations */
const resizeScheduledRef = useRef(false)
/**
* Set up responsive behavior using ResizeObserver
* Resizes chart when parent container dimensions change
*/
useEffect(() => {
const handleResize = () => {
if (chartRef.current && !resizeScheduledRef.current) {
resizeScheduledRef.current = true
// Use requestAnimationFrame for smooth resize performance
requestAnimationFrame(() => {
chartRef.current?.getEchartsInstance().resize();
resizeScheduledRef.current = false
});
}
}
const resizeObserver = new ResizeObserver(handleResize)
const chartElement = chartRef.current?.getEchartsInstance().getDom().parentElement
if (chartElement) {
resizeObserver.observe(chartElement)
}
// Cleanup: disconnect observer when component unmounts
return () => {
resizeObserver.disconnect()
}
}, [chartData])
return (
{chartData && chartData.length > 0
?
:
}
)
}
export default PieChart