現在、React JSX Highcharts モジュールを使用して、複数のスプライン シリーズを動的に表示するチャートを作成しています (.map 関数を使用)。
私はこれを書いたレンダリング関数で、DataLines と呼ばれるグローバル var を持っています:
{DataLines.map(Line,index)=>
<SplineSeries key={index} id={Line.id} name={Line.name} data={Line.points}/>}
Datalines が 2 本の線を保持する場合、チャートはそれを正しく表示します。ただし、DataLines から最初の行を削除すると、代わりに 2 番目の行がグラフから削除され (グラフの下部にある行名で示されます)、再レンダリングしてもグラフ自体は実際には変更されません。新しい DataLines を使用します。
さらに、チャートに単一の線があり、代わりに別の単一の線を保持するように DataLines を変更すると、チャートはまったく更新されません。
コンソール ログを使用すると、レンダリング関数に送信されたデータが正しいことがわかります。
何が原因で、どうすれば修正できますか? モジュールの既知の問題ですか?
前もって感謝します!
編集: 私のサーバーは c# でシグナルを処理しているため、それを共有するのはもう少し複雑になりますが、チャートの更新をトリガーするイベントは次のとおりです。
createDataLines(lines){
lines.foreach(l=>{
lNewLine={
name:l.name,
id:l.id,
points:l.points,
}
l.points.foreach(p=>{
point={
x:p.time,
y:p.height,
}
lNewLine.points.push(point)
})
this.state.DataLines.push(lNewLine);
});
}
- 関数は componentDidUpdate から呼び出され、行は親コンポーネントからの設定状態を使用して小道具として受信されます。したがって、基本的に、新しい小道具を受け取ると、新しいデータでグラフを作成します (その後、グラフが適切に更新されないという問題に戻ります)。