当前位置:首页 > React

react实现echarts

2026-01-26 14:51:33React

在 React 中实现 ECharts

安装 ECharts 和 React 封装库

npm install echarts echarts-for-react

基础使用示例

创建一个简单的折线图组件

import React from 'react';
import ReactECharts from 'echarts-for-react';

function LineChart() {
  const option = {
    xAxis: {
      type: 'category',
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
      type: 'value'
    },
    series: [{
      data: [820, 932, 901, 934, 1290, 1330, 1320],
      type: 'line'
    }]
  };

  return <ReactECharts option={option} />;
}

export default LineChart;

响应式处理

添加窗口大小变化的监听

react实现echarts

import React, { useEffect, useRef } from 'react';
import ReactECharts from 'echarts-for-react';

function ResponsiveChart() {
  const chartRef = useRef(null);

  const option = {
    // 图表配置
  };

  useEffect(() => {
    const handleResize = () => {
      if (chartRef.current) {
        chartRef.current.getEchartsInstance().resize();
      }
    };

    window.addEventListener('resize', handleResize);
    return () => window.removeEventListener('resize', handleResize);
  }, []);

  return <ReactECharts ref={chartRef} option={option} />;
}

主题定制

使用自定义主题

import * as echarts from 'echarts';
import ReactECharts from 'echarts-for-react';

function ThemedChart() {
  // 注册主题
  echarts.registerTheme('my_theme', {
    backgroundColor: '#f4cccc',
    // 其他主题配置
  });

  return (
    <ReactECharts 
      option={option} 
      theme="my_theme" 
      style={{ height: 400 }}
    />
  );
}

事件处理

添加图表事件监听

react实现echarts

function ChartWithEvents() {
  const onEvents = {
    click: (params) => {
      console.log('Chart clicked', params);
    },
    legendselectchanged: (params) => {
      console.log('Legend selected', params);
    }
  };

  return <ReactECharts option={option} onEvents={onEvents} />;
}

动态数据更新

使用 useEffect 更新数据

function DynamicChart({ data }) {
  const [option, setOption] = useState(baseOption);

  useEffect(() => {
    setOption(prev => ({
      ...prev,
      series: [{ ...prev.series[0], data }]
    }));
  }, [data]);

  return <ReactECharts option={option} />;
}

性能优化

对于大数据量图表使用懒加载

function LazyLoadChart() {
  const [loaded, setLoaded] = useState(false);

  return (
    <div onMouseEnter={() => setLoaded(true)}>
      {loaded && <ReactECharts option={largeDataOption} />}
      {!loaded && <div>Hover to load chart</div>}
    </div>
  );
}

注意事项

  • 确保在组件卸载时销毁图表实例
  • 大数据量场景考虑使用增量渲染
  • 多图表页面注意内存管理
  • 服务端渲染需要特殊处理

标签: reactecharts
分享给朋友:

相关文章

react如何引入echarts

react如何引入echarts

安装 ECharts 依赖 在 React 项目中安装 ECharts 核心库和 React 封装库: npm install echarts echarts-for-react 基础引入方式 创建…

react如何创建项目

react如何创建项目

使用 Create React App 创建项目 Create React App (CRA) 是官方推荐的 React 项目脚手架工具,适合快速初始化一个现代化的 React 项目。 安装 C…

react 如何算精通

react 如何算精通

精通 React 的标准 精通 React 不仅需要掌握基础语法和核心概念,还需具备解决复杂问题、优化性能和架构设计的能力。以下是衡量 React 精通程度的关键维度: 核心概念与机制 组件…

react如何上传文件

react如何上传文件

使用React上传文件的方法 使用HTML的input元素和FormData 创建一个文件输入字段,通过onChange事件获取文件对象,使用FormData将文件数据发送到服务器。 import…

react 如何引用slider

react 如何引用slider

使用 React 实现 Slider 组件 在 React 中实现 Slider 功能可以通过原生 HTML 的 <input type="range"> 或第三方库(如 react-sl…

react如何编码参数

react如何编码参数

编码参数的方法 在React中,编码参数通常涉及URL查询参数或路由参数的编码和解码。以下是几种常见场景的处理方法: URL查询参数编码 使用encodeURIComponent对参数进行编码,避免…