12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import React, { useEffect, useRef } from 'react';
- import classNames from 'classnames';
- // 按需导入模块
- // 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。
- import * as echarts from 'echarts/core';
- // 引入图表,图表后缀都为 Chart
- import { LineChart } from 'echarts/charts';
- // 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
- import {
- TitleComponent,
- TooltipComponent,
- GridComponent,
- DatasetComponent,
- TransformComponent,
- } from 'echarts/components';
- // 标签自动布局,全局过渡动画等特性
- import { LabelLayout, UniversalTransition } from 'echarts/features';
- // 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
- import { CanvasRenderer } from 'echarts/renderers';
-
- // 注册必须的组件
- echarts.use([
- TitleComponent,
- TooltipComponent,
- GridComponent,
- DatasetComponent,
- TransformComponent,
- LineChart,
- LabelLayout,
- UniversalTransition,
- CanvasRenderer,
- ]);
-
- import Styles from './style.less';
-
- export default (props) => {
- const domRef = useRef();
- const echartsRef = useRef();
-
- useEffect(() => {
- echartsRef.current = echarts.init(domRef.current);
- echartsRef.current.setOption(props.option);
- }, []);
-
- useEffect(() => {
- if (echartsRef.current) {
- echartsRef.current.setOption(props.option);
- }
- }, [props.option]);
-
- useEffect(() => {
- if (echartsRef.current) {
- if (props.loading) {
- echartsRef.current.showLoading();
- } else {
- echartsRef.current.hideLoading();
- }
- }
- }, [props.loading]);
-
- const classList = classNames(Styles.echarts, props.className);
-
- return <div className={classList} ref={domRef} />;
- };
|