Next.js 集成 Highcharts 官网文档说明(2025 新版)

Next.js

服务器端渲染

Highcharts 交互式图表无法在服务器端生成,因为交互性依赖于客户端环境。 可以使用 Highcharts 导出服务器 Highcharts Export Server 生成静态图片。

为了在使用最新版本(v13+)的 Next.js(使用应用路由)中使用 Highcharts, 你需要在包含 Highcharts 组件或模块的文件中添加 'use client',以确保它在客户端渲染。

jsx 复制代码
'use client';

import { Chart, Series, Title } from '@highcharts/react';
import { Accessibility } from '@highcharts/react/options/Accessibility';

export default function ChartPage() {
  return (
    <Chart>
      <Title>Hello NextJS!</Title>
      <Series type="line" data={[1, 2, 3, 4, 5]} />
      <Accessibility />
    </Chart>
  );
}

页面路由

如果你在 Next.js 中使用页面路由,Highcharts 仍然可以轻松使用,只要渲染限制在客户端即可。 主要注意事项是:

  • 避免在 getServerSideProps or getStaticProps中直接使用 Highcharts,因为它需要一个 DOM 环境。
  • 导入和渲染 Highcharts 的组件应为标准的 React 组件,通常在 /pages 目录下的页面中也能正常工作。

从服务器流式传输数据

虽然 Highcharts 在服务器端无法使用,但你可以使用服务器端渲染进行数据获取,然后将数据流式传输到客户端组件以渲染图表。

考虑这个 page.tsx 文件:

jsx 复制代码
import { Suspense } from 'react';
import DataChart from './chart';

export default function Page() {
  const data = fetch('https://www.highcharts.com/samples/data/aapl.json')
    .then(res => res.json());

  return (
    <Suspense fallback={<div>Loading data...</div>}>
      <DataChart data={data} />
    </Suspense>
  )
}

结合这个 chart.tsx:

jsx 复制代码
"use client";

import { use } from 'react';

import { StockChart } from '@highcharts/react/Stock';
import { LineSeries } from '@highcharts/react/series/Line';
import { Title } from '@highcharts/react/options';
import { Accessibility } from '@highcharts/react/options/Accessibility';

export default function DataChart({ data }) {
  const allData = use(data);

  return (
    <StockChart>
      <Title>Hello stock NextJS!</Title>
      <LineSeries data={allData} />
      <Accessibility />
    </StockChart>
  );
}

更多详情,请参阅 Next.js 文档.

更新发布于 2026 年 1 月 30 日

相关推荐
葡萄城技术团队1 分钟前
一个单元格放置两个日期选择器:用 SpreadJS CellButtons 录入日期范围
前端
东华万里29 分钟前
第41篇 C++类与对象核心知识梳理:从底层原理到面试实战
开发语言·c++·大学生专区
FEF前端团队1 小时前
小程序微信支付 V3 接入实战手册:从商户配置到前后端落地
javascript·后端·node.js
微小冷1 小时前
Python图论库NetworkX初步
开发语言·python·图论·graph·networkx·digraph
马可家的菠萝1 小时前
自动保存已经有了,为什么笔记软件还需要“历史版本”?
前端·后端·架构
半个落月1 小时前
从 "use client" 到 Route Handler:用 Todos 理解 Next.js 水合与全栈请求
前端·react.js·next.js
qq_452396232 小时前
第七篇:《大型前端项目的模块化与目录结构设计》
前端
你脑门上的脚印2 小时前
Vue 项目从零实现语音转文字、文字转语音功能(完整可用 + 踩坑指南)
前端·vue.js
Data_Journal2 小时前
如何使用 Python 抓取 Google Flights:分步指南
大数据·开发语言·数据库·python·scrapy
一直C2 小时前
【数据结构】哈希表+算法复杂度与经典排序查找(C语言)
java·linux·开发语言·数据结构·算法·ubuntu·散列表