Highcharts React v4.2.1 版本正式发布了!

这次更新不仅带来了错误修复 和新功能 ,更重要的是对组件文档进行了全面重写。这体现了我们持续的努力------让使用 Highcharts 的 React 开发者能够获得更加自然、顺畅的开发体验。
如果你一直在等待尝试新的集成,现在正是好时机。让我们一起来看看有哪些新变化。

主要更新亮点
1. 更完善的迁移指南(从v3升级)
我们更新了迁移指南,让升级路径更清晰、更容易遵循。
新指南包含:
-
"之前"和"之后"的语法对比示例
-
详细的代码片段,涵盖配置、高级功能和服务端渲染
-
一步步指导你完成升级过程
无论你是从旧版本升级,还是第一次使用,都能快速上手。
2. 数据不可变:默认禁用数据变更
这是一个重要的默认行为变更!
现在,我们默认将 allowMutatingData 设置为 false。这意味着 Highcharts 会将你的数据视为不可变,保持原始状态不被修改。
这样做的好处是:
-
更可预测的行为
-
更好地符合 React 开发者对状态管理的预期
-
避免意外修改数据导致的 bug
💡 如果你处理的是超大数据集,需要优先考虑性能 ,仍然可以通过设置
allowMutatingData: true来启用数据变更。
3. 全新的 Drilldown 组件
下钻功能现在有了专属的组件!只需导入它,然后将任何支持的 API 选项作为 props 传入即可。
import { Drilldown } from '@highcharts/highcharts-react'
// 使用示例
<Drilldown
series={[{
name: '下钻数据',
id: 'drilldown-series',
data: [...]
}]}
/>
这次更新源于社区的强烈需求,它将下钻配置带入了更清晰、更结构化的 React 模式。
更多改进
1. 更好的 TypeScript 支持(Series组件)
我们大幅改进了 Series 组件的 TypeScript 支持。现在,options 属性会根据你选择的系列类型进行精准限定。
// 以前:options 类型宽泛,可能传入错误的属性
// 现在:自动限定为 line 系列的有效选项
<Series type="line" options={lineOptions} />
带来的好处:
-
更智能的自动补全
-
更早的错误检测
-
更少的意外问题
2. 更新的渲染策略
我们改进了集成内部将 React 元素渲染为 HTML 的方式。
以前的问题:
-
使用
renderToStaticMarkup(来自react-dom/server) -
会将服务端 React 代码拖入客户端 bundle
-
对纯客户端应用不友好
现在的解决方案:
-
采用浏览器友好型渲染器
-
渲染到临时 DOM 节点,然后读取生成的 HTML
-
结果相同,但依赖链更干净、更可预测
3. 更好的文档
我们已经显著改进了组件文档,但这只是开始!

接下来的重点是:
-
优化文档整体结构
-
增加更多React 专属的代码示例
-
帮助你更快上手、更顺畅开发
我们正在积极征集反馈
这是 Highcharts React 集成发展的重要阶段,我们非常期待听到你的声音!
如果你在用 React 构建图表,请告诉我们:
-
哪些地方体验很好?
-
哪些地方感觉别扭?
-
还缺少什么功能?
-
什么能让它成为你的首选图表工具?
👉 欢迎在 GitHub 上提 issue,或者来我们的 Discord 频道开启讨论。现在正是影响未来发展方向的好时机!
下一步计划
在接下来的几个月里,你可以期待:
-
更多 React 专属的代码示例
-
持续优化文档结构
-
基于社区反馈的小功能改进
-
不断打磨开发者体验
立即体验
如果你还没有尝试过全新的 Highcharts React 集成,现在就安装最新版本,开始你的图表开发之旅吧!
npm: npm install highcharts @highcharts/react
using yarn: yarn add highcharts @highcharts/react
@highcharts/react requires react and react-dom as peer dependencies. If they are not already part of your project, you can add them:
npm install react react-dom
或者访问我们的官方文档了解更多详情。
让我们一起打造更好的 React 图表开发体验!
快速开启:
import React from 'react';
import { createRoot } from 'react-dom/client';
import { Chart, Title, Series } from '@highcharts/react';
import { ColumnSeries } from '@highcharts/react/series/Column';
import { AreaSeries } from '@highcharts/react/series/Area';
export function Application() {
return (
<Chart>
<Title>Chart with multiple series types</Title>
<Series
data={[2, 4, 3, 1, 5]}
options={{ name: 'Line series', color: 'red' }}
/>
<ColumnSeries
data={[3, 5, 1, 2, 4]}
options={{ name: 'Column series', color: 'yellow' }}
/>
<AreaSeries
data={[4, 2, 1, 5, 3]}
options={{ name: 'Area series', color: 'blue' }}
/>
</Chart>
);
}
const root = createRoot(document.getElementById('root'));
root.render(<Application />);