javascript ReactJS扫描线演示:多个曲面不同时更新的问题

lpwwtiir  于 11个月前  发布在  Java
关注(0)|答案(2)|浏览(77)

我需要用reactjs做一个带有多个曲面的扫描线的演示,但问题是,当我选择显示多个曲面时,它只会在最新创建的曲面上播放数据,并停止在旧曲面上绘制数据。
你可以在这里看到代码的例子:https://28zf6p.csb.app/
这是问题的GIF:

注意:我需要多个表面的原因是我想用sortableJS拖动图表来遵循我的设计。

zy1mlcev

zy1mlcev1#

我没有深入挖掘,似乎生成图形的函数中有一个错误,并记住了div的链接。
然而,如果你给div添加id属性,它就开始正常工作了,也许库本身在后台使用id来访问DOM元素。
在App.js中

for (let i = 0; i < value; i++) {
  sciCharts.push(<SciChart key={i} id={i} />);
}

字符串
在SciChart.jsx中

const SciChart = ({ id }) => {
...
return (
  <div id={id} ref={ref} style={{ height: "20%", width: "20%" }}>
    SciChart
  </div>
);
}


在此测试https://codesandbox.io

brccelvz

brccelvz2#

你可以使用一个开源的官方React wrapper for scichart
它似乎解决了这个问题。
查看Live Example

// SciChart.jsx

import { useRef } from "react";
import { SciChartReact } from "scichart-react";
import { dataForSciChart, drawData, initScichart } from "./initScichart";

const SciChart = () => {
  const intervalTimer = useRef();
  return (
    <SciChartReact
      style={{ height: "20%", width: "20%" }}
      fallback={<>Loading</>}
      initChart={initScichart}
      onInit={({ xyDataSeries }) => {
        intervalTimer.current = drawData(xyDataSeries, dataForSciChart);
      }}
      onDelete={() => {
        clearInterval(intervalTimer.current);
      }}
    />
  );
};

字符串

相关问题