Skip to content

快速开始

这是一个为 ECharts 图表提供自适应功能的插件。它可以监听一个元素的大小变化,并自动调整 ECharts 图表的大小,以确保图表在不同设备和屏幕尺寸下都能正常显示。

特性

  • 自适应调整:自动监听容器大小的变化,调整图表尺寸。
  • 灵活配置:支持自定义调整参数,以满足特定需求。
  • 简单易用:通过简单的配置即可实现图表的自适应功能。

安装模块

bash
npm install echarts-adaptive-plugin
bash
yarn add echarts-adaptive-plugin
bash
pnpm add echarts-adaptive-plugin

使用示例

js
import * as echarts from 'echarts';
import { echartsAdaptive } from 'echarts-adaptive-plugin';

// 初始化 ECharts 实例
const echartsInstance = echarts.init(
  document.getElementById('your-chart-container')
);

// 获取需要监听大小变化的元素
const monitorContent = document.getElementById('your-chart-container');

// 确保 monitorContent 不为空
if (!monitorContent) {
  throw new Error(
    '监视内容的元素未找到,请确保元素ID正确且已经被加载到DOM中。'
  );
}

// 配置自适应插件
const destroyAdaptive = echartsAdaptive({
  echartsInstance,
  monitorContent: document.getElementById('your-chart-container'),
  handle: ({ echartsInstance, monitorContent }) => {
    // 可以在这里返回自定义的调整参数
    return {};
  }
});

// 当不再需要自适应功能时,可以调用返回的函数销毁监听
// destroyAdaptive();
vue
<template>
  <div ref="resizeContainer">
    <div
      ref="chartContainer"
      style="width: 100%; height: 400px;"
    ></div>
  </div>
</template>

<script setup>
import { onMounted, onBeforeUnmount, ref } from 'vue';
import * as echarts from 'echarts';
import { echartsAdaptive } from 'echarts-adaptive-plugin';

const resizeContainer = ref(null);
const chartContainer = ref(null);
let destroyAdaptive;

onMounted(() => {
  if (chartContainer.value) {
    const echartsInstance = echarts.init(chartContainer.value);
    const option = {
      /* 你的ECharts配置项 */
    };
    echartsInstance.setOption(option);

    // 使用echartsAdaptive来自适应调整大小,并保留返回的销毁函数
    destroyAdaptive = echartsAdaptive({
      echartsInstance,
      monitorContent: resizeContainer.value // 监听 resizeContainer 尺寸变化
    });
  }
});

onBeforeUnmount(() => {
  if (destroyAdaptive) {
    destroyAdaptive(); // 调用返回的函数来停止监听
  }
});
</script>
js
import React, { useEffect, useRef } from 'react';
import * as echarts from 'echarts';
import { echartsAdaptive } from 'echarts-adaptive-plugin';

const MyEChartsComponent = () => {
  const chartRef = useRef(null); // 用于引用图表容器的DOM元素
  const echartsInstanceRef = useRef(null); // 用于存储ECharts实例

  useEffect(() => {
    // 确保DOM元素已经加载
    if (chartRef.current && !echartsInstanceRef.current) {
      // 初始化ECharts实例
      echartsInstanceRef.current = echarts.init(chartRef.current);
      // 假设你有一些图表的配置
      const option = {
        /* 你的ECharts配置项 */
      };
      echartsInstanceRef.current.setOption(option);

      // 使用echartsAdaptive来自适应调整大小,并保留返回的销毁函数
      const destroyAdaptive = echartsAdaptive({
        echartsInstance: echartsInstanceRef.current,
        monitorContent: chartRef.current
      });

      // 组件卸载时调用销毁函数
      return () => {
        destroyAdaptive();
        echartsInstanceRef.current.dispose(); // 同时销毁ECharts实例
      };
    }
  }, []); // 空依赖数组表示这个effect只在组件挂载时运行

  return (
    <div
      ref={chartRef}
      style={{ width: '100%', height: '400px' }}
    />
  );
};

export default MyEChartsComponent;

API

echartsAdaptive(options)

  • echartsInstance: echarts.ECharts - ECharts 实例。
  • monitorContent: HTMLElement - 需要监听大小变化的元素。
  • handle?: (options: { echartsInstance: echarts.ECharts; monitorContent: HTMLElement; }) => object - 可选的处理函数,用于返回自定义的调整参数。