如何在用Reaction包装的图表组件中实现图表数据的自动更新?

例如,我从后端请求的数据会发生变化,我想在它发生变化时对其进行更新.

我试图查找一些图库的文档,但没有找到答案.

推荐答案

In VChart, you can update the chart by calling either updateSpec or updateData. enter image description here

要更新图表数据,可以在Reaction组件中初始化图表实例时使用REF保存该图表实例.然后,使用useEffect设置需要更新的数据的依赖项,并在回调函数中调用图表实例的updateData方法.

VChart还提供了Reaction-VChart包装器:

https://www.visactor.io/vchart/guide/tutorial_docs/Cross-terminal_and_Developer_Ecology/react

您可以参考下面的代码示例来使用Reaction-VChart更新图表数据.

代码示例

点击"更新条形图的数据"按钮可以更新图表的数据.

import "./styles.css";
import { BarChart } from "./BarChart";
import { LineChart } from "./LineChart";
import { AreaChart } from "./AreaChart";
import { getBarData } from "./bar-data";
import { useState } from "react";

const colorMaps = {
  default: [
    "#6690F2",
    "#70D6A3",
    "#B4E6E2",
    "#63B5FC",
    "#FF8F62",
    "#FFDC83",
    "#BCC5FD",
    "#A29BFE",
    "#63C4C7",
    "#F68484"
  ],
  red: [
    "#c12e34",
    "#e6b600",
    "#0098d9",
    "#2b821d",
    "#005eaa",
    "#339ca8",
    "#cda819",
    "#32a487"
  ]
};

export default function App() {
  const [barData, setBarData] = useState<any[]>(getBarData());
  const [colors, setColors] = useState<string[]>(colorMaps.default);
  const handleUpdateBarData = () => {
    setBarData(getBarData());
  };

  const handleUpdateColors = () => {
    if (colors === colorMaps.default) {
      setColors(colorMaps.red);
    } else {
      setColors(colorMaps.default);
    }
  };

  return (
    <div className="App">
      <div>
        <img src="https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/logo_500_200_light.png" />
      </div>
      <button onClick={handleUpdateBarData}>
        Update the data of bar chart
      </button>

      <button onClick={handleUpdateColors}>update colors</button>

      <h2>A Bar Chart</h2>

      <BarChart data={barData} colors={colors} />

      <h2>A Line Chart</h2>
      <LineChart colors={colors} />

      <h2>A Area Chart</h2>
      <AreaChart colors={colors} />
    </div>
  );
}

结果

在线演示:https://codesandbox.io/S/visator-vchara-action-demo-forked-jsqqjj

enter image description here

相关文档

Reaction-vChart教程:https://www.visactor.io/vchart/guide/tutorial_docs/Cross-terminal_and_Developer_Ecology/react

GitHub:https://github.com/VisActor/VChart

Reactjs相关问答推荐

重定向React路由中没有根文件夹的所有路径匹配

sourceBuffer. appendBuffer成功,但h5视频播放器卡住了

Redux向后端发送请求时出现钩子问题

在一个blog函数中调用setState钩子

导致useState中断的中断模式

子路径上未定义useMatches句柄

无法使用Reaction日期选取器和Next.js设置初始日期

使用自动播放的视频组件呈现登录页面时出现JEST测试错误

带有样式的工具提示导致无法向功能组件提供参考警告

如何将 npm 包添加到我的 Vite + React 应用程序中?

我可以在加载器函数中多次 fetch() 并使用一次 useloaderdata() 提取它吗?

单击按钮时如何添加或删除 3d 对象

如何在不使用 Axios 的情况下将图像文件从 React.js 发送到 Spring Boot Rest API?

如何在react 中正确销毁上下文?

页面加载时不显示数组中的数据

具有自动完成功能的 Formik material ui 无法按预期工作

react-query、react-hook-form 和表单验证

从输入中获取数字时,react 计数器不会增加

Axios 删除在带有授权令牌的react js 中不起作用

服务器端分页未按预期工作