У меня проблема с областью действия state
в приложении react
.
Я добавляю несколько кнопок к своему компоненту chart
в верхней части компонента высокой диаграммы. Теперь я хотел бы добавить эти кнопки в пространство диаграммы (под заголовком), чтобы сэкономить место.
Решение, которое я нашел в старых постах и на форуме, заключалось в использовании этого метода:
chart.events.render(this.renderer.button.add())
Я не уверен, что этот метод устарел в пользу SVGRenderer
.
Мой подход был
chart: {
events: {
render() {
let chart = this;
console.log("this chart", chart);
const handlePeriodClick = (periodType) => {
const filteredData = chart.options.data.map((option) =>({
...option,
data: option.data.filter((item) =>
moment(item[0]).diff(moment(item[0]).endOf(periodType), 'days') === 0)
}));
// need to acces states from React within Highchart.chart component
this.setState({ filteredData });
};
chart.renderer.button('D',10, 55)
.on('click', function () {
handlePeriodClick('day');
})
.add();
chart.renderer.button('W',35, 55)
.on('click', function () {
handlePeriodClick('week');
})
.add();
chart.renderer.button('M',60, 55)
.on('click', function () {
handlePeriodClick('month');
})
.add();
}
}
},
Мне нужно обновить state
внутри этого вызова функции, чтобы отразить обновление data
. Вот рабочая демоверсия .
Я также пытался использовать SVGRenderer
вместо renderer
, но не смог заставить его работать.