React + ECharts 数据可视化实战与面试要点

在前端项目里,数据可视化几乎是标配功能。无论是老板看财报,还是产品看用户数据,直观的图表总比一堆数字更有说服力。最近在用 React + ECharts 做可视化的时候,顺便整理了一些实用经验和面试可能会问到的知识点,分享出来给大家。


1. ECharts 简介

ECharts 是百度开源的一个 JavaScript 图表库,可以轻松绘制各种图表:

  • 柱状图(bar)
  • 饼状图(pie)
  • 折线图(line)
  • 地图(map)
  • 雷达图(radar)
  • ......

它的特点是:

  • 功能丰富,交互效果好
  • 对大数据量的渲染支持不错
  • 配置项灵活,学习成本不高
  • 和 React、Vue 等前端框架结合方便

2. 在 React + TypeScript 中使用 ECharts

安装依赖

css 复制代码
npm install echarts
npm install --save-dev @types/echarts

React 本身是 TypeScript 写的,所以类型声明已经内置;

ECharts 是 JavaScript 写的,类型声明需要单独安装。


渲染一个简单的饼状图

jsx 复制代码
import React, { useEffect, useRef } from 'react';
import * as echarts from 'echarts';

const Demo: React.FC = () => {
  const chartRef = useRef<HTMLDivElement>(null);

  useEffect(() => {
    if (chartRef.current) {
      const myChart = echarts.init(chartRef.current);

      const option = {
        title: {
          text: '姚大公司财报'
        },
        tooltip: {},
        legend: {
          data: ['销量']
        },
        series: [
          {
            name: '销量',
            type: 'pie',
            data: [
              { value: 335, name: '直接访问' },
              { value: 310, name: '邮件营销' },
              { value: 234, name: '联盟广告' },
              { value: 135, name: '视频广告' },
              { value: 1548, name: '搜索引擎' },
            ]
          }
        ]
      };

      myChart.setOption(option);
    }
  }, []);

  return <div ref={chartRef} style={{ width: '600px', height: '400px' }} />;
};

export default Demo;

使用流程很简单:

  1. useRef 获取 DOM 挂载点
  2. 调用 echarts.init 创建实例
  3. 通过 setOption 设置图表数据和样式

3. 面试中可能会问到的点

很多公司会在可视化相关岗位问到 ECharts,这里整理一些高频问题:

1)ECharts 和其他图表库的区别

  • ECharts:功能强大,支持交互,适合国内项目
  • Chart.js:轻量,配置简单,功能没那么全面
  • D3.js:底层库,自由度高,但学习成本也高

2)如何避免 React 中的重复渲染

  • 图表实例最好只在初次渲染时创建一次
  • 数据更新时用 setOption 改配置,不要重新 init

3)TypeScript 的类型约束

为什么要写成 useRef<HTMLDivElement>(null)

  • 如果不加类型,chartRef.current 默认是 null,无法直接当成 DOM 节点用
  • 加上 <HTMLDivElement> 之后,TS 能正确推断类型,传给 echarts.init 才不会报错

4)性能优化怎么做

  • 按需引入 ECharts 模块,减少打包体积
  • 只在数据变化时更新图表,避免无效渲染
  • 窗口缩放时给 chart.resize() 加防抖或节流

5)想做 3D 可视化怎么办


4. 小结

ECharts 用起来不复杂,尤其是结合 React 和 TypeScript,开发体验还不错。

面试中除了会问"怎么用",还可能会涉及 类型约束、性能优化、库的对比 等方面,这些才是能让你在回答里加分的地方。

相关推荐
一只小阿乐12 小时前
react 状态管理mobx中的行为模式
前端·javascript·react.js·mobx·vue开发·react开发
l***O52012 小时前
前端路由历史监听,React与Vue实现
前端·vue.js·react.js
超级战斗鸡12 小时前
React 性能优化教程:useMemo 和 useCallback 的正确使用方式
前端·react.js·性能优化
bemyrunningdog12 小时前
创建 React 项目指南:Vite 与 Create React App 详
前端·react.js·前端框架
safestar201214 小时前
React 19 深度解析:从并发模式到数据获取的架构革命
前端·javascript·react.js
LFly_ice16 小时前
学习React-22-Zustand
前端·学习·react.js
q***T58319 小时前
GitHub星标20万+的React项目,学习价值分析
前端·学习·react.js
郭小铭1 天前
React Suite v6:面向现代化的稳健升级
react.js·前端框架·github
徐同保1 天前
react+antd Input回车输入生成tag组件
前端·react.js·前端框架
打小就很皮...1 天前
React VideoPlay 组件封装与使用指南
前端·react.js·video