私は highcharts-react-official と highcharts を使用しています。それらはnpmから入手できます。私は異なるパッケージを使用していますが、動作原理は同じでなければなりません。
react-highchart での reflow() 関数の使い方も Highcharts.charts[i].reflow() です。デモ用に 2 つのコード サンドボックスを用意しました。最初のコード サンドボックスは、すべてのチャートをリフローする方法を示し、2 番目のコード サンドボックスは、特定のチャートをリフローする方法を示します。
最初のコード サンドボックス リンクはこちらです。
- App.js には、ハイチャート div を非表示および表示するボタンがあります。
- 子コンポーネントは React.memo (パフォーマンスの最適化のため) であるため、非表示のハイチャートは、表示された後に自動的にサイズ変更されません。
- ウィンドウのサイズに合わせてすべてのチャート ウィンドウのサイズを変更できるようにします。次のコードは App.js に配置されます。既存のすべてのチャートを探して、それらをリフローします。
for (var i = 0; i < Highcharts.charts.length; i++) {
if (Highcharts.charts[i] !== undefined) {
Highcharts.charts[i].reflow();
}
}
2 番目のコード サンドボックス リンクはこちらです。
- 最初のコード サンドボックスとほぼ同じですが、すべてのチャートを参照する ref 配列があります。
- リフローが必要なチャートは、そのチャート オプションに id を付けて配置されます。
- すべてのチャートを反復し、この例では「secondChart」などの ID を持つチャートのインデックスを取得します。
for (var i = 0; i < chartRef.current.length; i++) {
if (
chartRef.current[i].chart.userOptions.id !== undefined &&
chartRef.current[i].chart.userOptions.id === "secondChart"
)
Highcharts.charts[chartRef.current[i].chart.index].reflow();
}
- そのチャートをリフローします。