Проблема
Существуют условия гонки: при вводе двух + букв вы делаете два + сетевых звонка.Первый сетевой вызов может быть последним завершенным, а затем вы показываете результаты для неправильного запроса.
Я исправил это в этой ручке: https://codepen.io/arnemahl/pen/zaYNxv
Решение
Сохранитьотслеживание результатов по всем запросам, на которые вы когда-либо получали ответ.Всегда, как данные возвращаются для текущего запроса.(Кроме того, мы не знаем, что несколько вызовов API для одного и того же запроса).
state: {
seriesPerQuery: {}, // Now a map with one result for each query you look up
query: [],
}
...
onChange = async e => {
...
// Now keep the results of the old querys, in addition to the new one
// whenever you get an API response
this.setState(state => ({
seriesPerQuery: {
...state.seriesPerQuery,
[query]: data,
}
}));
}