Echart-react封装echart图表(React版)

该博客主要介绍了如何在React应用中使用ECharts库来创建和渲染图表。首先,通过useState和useRef管理状态和引用。然后,利用useEffect创建一个随机ID并初始化ECharts实例。最后,当options改变时,更新ECharts的配置项,实现图表的动态渲染。博客内容涉及到React Hook的运用和ECharts的集成。

思路:
外层只需要传入options即可进行渲染操作

import { useState, useEffect , useRef} from 'react';
import * as echarts from 'echarts';
import { generateMixed } from '../../utils/common';
import './index.css';


export default function EchartInit(props: any) {
  // 传入options配置项
  const { options } = props;
  

  const [echartID, setEchartID] = useState<string>('kop');
  const echartRef = useRef(null);
  let echart = null;
  useEffect(() => {
    setEchartID(generateMixed(32));

  },[])
  useEffect(() => {
    // 生成32位随机码当dom元素ID
    let dom = document.getElementById(echartID);
    // 实例化echart对象
    echart = echarts.init(dom as HTMLElement);
    // 渲染
    echart && echart.setOption(options)
  }, [options])

  return (
    <div id={echartID} ref={echartRef} className='echart-content'></div>
  )
}

index.css


.echart-content {
  height: 100%;
  width: 100%;
}

生成随机码


export function generateMixed(n: number) {
  var chars = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
  var res = "";
  for (var i = 0; i < n; i++) {
    var id = Math.floor(Math.random() * 62);
    res += chars[id];
  }
  return res;
}
是的,**`echarts-wordcloud` 必须单独安装**,它 **不是 ECharts 内置的功能模块**。 --- ### ✅ 为什么需要安装 `echarts-wordcloud`? ECharts 本身是一个通用可视化库,**词云(wordCloud)属于扩展图表类型**,并不包含在核心包中。因此: > 🔴 错误认知:以为 `echarts` 自带词云 → ❌ > 🟢 正确认知:必须额外引入 `echarts-wordcloud` 插件 → ✅ --- ### ✅ 是否需要安装? | 问题 | 回答 | |------|------| | **`echarts-wordcloud` 要安装吗?** | ✅ **要!必须安装** | | 不装会怎样? | 报错:`Unknown series type: wordCloud` | --- ### 🔧 安装命令 ```bash npm install echarts echarts-wordcloud ``` > ⚠️ 注意顺序: > - `echarts`: 核心库 > - `echarts-wordcloud`: 扩展插件(依赖于 echarts--- ### ✅ 引入方式(关键步骤) 虽然安装了,但你还得 **显式引入 `echarts-wordcloud`**,否则 ECharts 不会注册 `wordCloud` 类型。 #### 方式一:直接导入(推荐) ```js import * as echarts from 'echarts'; import 'echarts-wordcloud'; // 这一行非常重要! ``` 这会自动将 `wordCloud` 系列注册到 ECharts 中。 --- ### ✅ 验证是否成功 你可以打印一下支持的系列类型来确认: ```js console.log(echarts.getInstanceByDom(document.getElementById('chart'))?.getOption()?.series[0]?.type); // 或查看所有已注册的系列(需调试) ``` 或者简单测试: ```js const option = { series: [{ type: 'wordCloud', // 如果没有引入 echarts-wordcloud,这里会报错 data: [{ name: '测试', value: 10 }] }] }; chartInstance.setOption(option); // 成功则说明加载正确 ``` --- ### 📦 包结构说明 | 包名 | 作用 | |------|------| | `echarts` | 核心库(折线图、柱状图等) | | `echarts-wordcloud` | 词云扩展(基于 `d3-cloud` 算法封装) | > 📌 来源:https://github.com/ecomfe/echarts-wordcloud --- ### ❗常见错误及解决 | 错误现象 | 原因 | 解决方案 | |--------|------|-----------| | `Unknown series type: wordCloud` | 没有引入 `echarts-wordcloud` | 添加 `import 'echarts-wordcloud'` | | 中文乱码或重叠 | 字体太小或 `gridSize` 太大 | 减小 `gridSize`(如设为 `6` 或 `8`) | | 不显示任何词 | 数据格式不对 | 确保 `data` 是 `{ name: 'xx', value: 123 }` | --- ### ✅ 推荐配置片段(防坑) ```js import * as echarts from 'echarts'; import 'echarts-wordcloud'; // 👈 必须加这一行! const chart = echarts.init(document.getElementById('main')); chart.setOption({ series: [{ type: 'wordCloud', sizeRange: [12, 50], rotationRange: [0, 0], // 正向 gridSize: 6, // 更精细排布 shape: 'circle', data: [ { name: 'Vue', value: 20 }, { name: 'React', value: 18 } ] }] }); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值