У меня есть проблема, и я уверен, что я не единственный, кто когда-либо имел ее ... Хотя я пытался найти решение, я действительно не нашел то, что соответствует моей цели.
Я не буду публиковать много кода, так как это не проблема кода, а проблема логики.
Представьте, что у меня есть следующий хук:
useEffect(() => {
fetchFromApi(props.match.params.id);
}, [props.match.params.id]);
Представьте, что результат fetchFromApi отображается в простой таблице в пользовательском интерфейсе.
Теперь предположим, что пользователь нажимает насущность в навигации, поэтому пропадает идентификатор в URL браузера и эффект срабатывает, что приводит к вызову API.Допустим, вызов с этим конкретным идентификатором занимает 5 секунд.
В течение этих 5 секунд пользователь снова нажимает на элемент в навигации, поэтому перехват запускается снова.На этот раз вызов API занимает всего 0,1 секунды.Результат сразу отображается.
Но первый звонок все еще выполняется.После завершения он перезаписывает текущий результат, что приводит к отображению неверных данных в неправильном разделе навигации.
Есть ли простой способ решить эту проблему?Я знаю, что не могу отменить обещания по умолчанию, но я также знаю, что есть способы достичь этого ...
Также возможно, что fetchFromApi - это не один вызов API, а несколько вызововк нескольким конечным точкам, так что все может стать очень сложно ...
Спасибо за любую помощь.