У меня есть этот родительский компонент, который имеет это состояние, которое является объектом, одним из свойств является функция с именем onScrollbarSelection, которая создает топор ios post. Все это будет передано дочернему компоненту.
Дочерний компонент использует API из Highcharts, одно из свойств (afterSetExtremes) API использует функцию onScrollbarSelection из родительского (props). Проблема в том, что afterSetExtremes может запускать много раз подряд, что заставляет функцию onScrollbarSelection также выполнять много раз подряд и делает много постов ax ios, вызывая сбой браузера.
попытался поставить тайм-аут на пост-вызов, но не сработал, он все еще вызывает, заставляет топор ios публиковать много раз. Как я могу предотвратить выполнение onScrollbarSelection (или события afterSetExtremes) много раз подряд?
const Parent = () => {
const [state,setState] = useState({
onScrollbarSelection: (e) => {
var min = new Date(e.min);
var max = new Date(e.max);
var minDate = min.getFullYear() + '-' + (min.getMonth() + 1) + '-' + min.getDate();
var maxDate = max.getFullYear() + '-' + (max.getMonth() + 1) + '-' + max.getDate();
async function postData() {
axios.post('url',{
start_date: minDate,
end_date: maxDate,
});
}
setTimeout(postData(),3000);
}
});
useEffect( () => {
async function fetchData() {
var res = await axios.get(url);
setState({
...state,
data: res.data,
});
}
fetchData();
},[]);
return(
<div>
<Child config={state}/>
</div>
)
};
const Child = (props) => {
const state = {
xAxis:{
events: {
afterSetExtremes: (e) => { //this triggers a lot of consecutive times
props.config.onScrollbarSelection(e);
}
}
},
};
return (
<div>
<HighchartsReact highcharts={Highcharts} constructorType={'stockChart'} options={state} />
</div>
);
}