#javascript #reactjs #react-functional-component #react-highcharts
Вопрос:
у меня есть компонент без состояния и глобально определенный объект chartoptions
const stockOptions = {
title: {
text: 'Sales and Profit Chart',
align: 'left',
style: { fontFamily: 'Roboto', fontWeight: 500, fontSize: 20 }
},
series:[{
type: 'spline',
name: 'Net Profit',
data: [1,2,3,4,5,56,54,45,56,3,2,32,3,5,546,65,6768,678,678,85,45,34,1,2,3,4,5,56,54,45,56,3,2,32,3,5,34],
dataGrouping:{units:[['month',[1]]], enabled:true}
},
{
type: 'spline',
name: 'Units',
data: [1,2,3,4,5,56,54,45,56,3,2,32,3,5,546,65,6768,678,678,85,45,34,32,3,5,546,65,6768,678,678,85,45,34],
dataGrouping: {
units: [["week", [1]]],
enabled: true,
},
marker: {
lineWidth: 2,
lineColor: Highcharts.getOptions().colors[4],
fillColor: 'white'
}
},
],
}
и внутри функции я определил состояние с помощью react hook useState, и внутри этого состояния я передал весь объект chartoption
const [stockChart, setStockChart] = useState(stockOptions);
и для группировки данных я обновляю, используя функцию on cahnge, и обновляю состояние таким образом
//unit is is passing as day, month, year etc.
stockChart.series.forEach((ser) => {
ser.dataGrouping.units = [[[unit], [1]]];
});
setStockChart(stockChart);
Комментарии:
1. проблема решается с помощью крючка useRef для получения экземпляра диаграммы высокого уровня и с помощью метода обновления для рядов для обновления единиц для группирования данных, таких как « chart.series.forEach((ser) => { ser.update({ Группировка данных: { единицы: [[единица, [1]]], включено: true, принудительно: true}}, ложь); }); «