import * as echarts from 'echarts' /** * ECharts自适应容器大小Hook * * @param {Object} domRef - DOM元素引用对象,需包含value属性指向要挂载的DOM节点 * @returns {Object} chart - 包含value属性的对象,value保存ECharts实例引用 */ const useEchartsResize = (domRef) => { // 图表实例容器,用对象包装便于保持引用地址 const chart = {value: null} // 窗口大小变化处理函数 const resizeChart = () => { chart.value?.resize() } // 组件挂载后初始化逻辑 onMounted(() => { if (!domRef.value) return // 初始化ECharts实例并注册resize监听 chart.value = echarts.init(domRef.value) window.addEventListener('resize', resizeChart) }) // 组件卸载前清理逻辑 onBeforeUnmount(() => { // 移除监听并清理图表实例 window.removeEventListener('resize', resizeChart) chart.value?.dispose() chart.value = null }) return {chart} } export default useEchartsResize