当前位置:首页 > React

react实现echarts甘特图

2026-01-26 23:14:57React

实现步骤

安装必要的依赖包,确保项目中有 echartsreact 的基础环境。

npm install echarts echarts-for-react

引入模块

在 React 组件中引入 ReactEChartsecharts 核心模块。

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

配置甘特图数据

甘特图的核心是数据格式,通常需要包含任务名称、开始时间、结束时间等信息。以下是一个示例数据格式:

react实现echarts甘特图

const ganttData = [
  {
    name: '任务A',
    start: '2023-01-01',
    end: '2023-01-05'
  },
  {
    name: '任务B',
    start: '2023-01-03',
    end: '2023-01-08'
  },
  {
    name: '任务C',
    start: '2023-01-06',
    end: '2023-01-10'
  }
];

转换日期为时间戳

ECharts 的甘特图通常需要将日期转换为时间戳以便正确渲染。

const processData = (data) => {
  return data.map(item => ({
    ...item,
    startValue: new Date(item.start).getTime(),
    endValue: new Date(item.end).getTime()
  }));
};

配置 ECharts 选项

定义 ECharts 的配置项,设置坐标轴、系列类型及数据绑定。

react实现echarts甘特图

const getOption = () => {
  const processedData = processData(ganttData);
  return {
    tooltip: {
      trigger: 'axis',
      formatter: params => {
        const data = params[0].data;
        return `${data.name}<br/>开始: ${data.start}<br/>结束: ${data.end}`;
      }
    },
    xAxis: {
      type: 'time'
    },
    yAxis: {
      type: 'category',
      data: processedData.map(item => item.name)
    },
    series: [
      {
        type: 'bar',
        data: processedData.map(item => [
          item.startValue,
          item.endValue,
          item.name
        ]),
        encode: {
          x: [0, 1],
          y: 2
        }
      }
    ]
  };
};

渲染组件

在 React 组件中使用 ReactECharts 渲染配置好的甘特图。

const GanttChart = () => {
  return (
    <ReactECharts
      option={getOption()}
      style={{ height: '400px', width: '100%' }}
    />
  );
};

export default GanttChart;

自定义样式调整

如果需要调整甘特图的颜色、间距或其他样式,可以通过修改 series 配置实现。

series: [
  {
    type: 'bar',
    itemStyle: {
      color: '#3398DB'
    },
    barGap: '10%',
    barCategoryGap: '20%',
    data: processedData.map(item => [
      item.startValue,
      item.endValue,
      item.name
    ]),
    encode: {
      x: [0, 1],
      y: 2
    }
  }
]

动态数据更新

如果数据需要动态更新,可以通过 React 的状态管理实现。

const [data, setData] = React.useState(ganttData);

const updateData = (newData) => {
  setData(newData);
};

return (
  <ReactECharts
    option={getOption(data)}
    style={{ height: '400px', width: '100%' }}
  />
);

注意事项

  • 确保日期格式正确,避免因格式问题导致渲染异常。
  • 调整 yAxisinverse 属性可以控制任务列表的排序方向。
  • 复杂场景下可能需要结合 dataset 和多个 series 实现更丰富的交互效果。

标签: 甘特图react
分享给朋友:

相关文章

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 在项目根目录的 package.json 文件中查看 dependencies 或 devDependencies 下的 react 和…

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: node…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

如何同步react

如何同步react

同步React组件状态的方法 使用useState和useEffect钩子组合可以同步React组件的状态。useState用于声明状态变量,useEffect用于监听状态变化并执行副作用。 imp…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…

react就业如何

react就业如何

React 就业市场现状 React 作为当前主流前端框架之一,就业需求持续旺盛。国内外互联网企业、中大型公司以及初创团队普遍采用 React 技术栈,尤其在 Web 应用、移动端(React Nat…