Я начал собирать некоторые из моих новых компонентов с новыми блестящими крючками React.Но я использовал много асинхронных API-вызовов в моих компонентах, где я также показываю загрузчик, пока данные извлекаются.Итак, насколько я понял концепцию, это должно быть правильно:
const InsideCompontent = props => {
const [loading, setLoading] = useState(false);
useEffect(() => {
...
fetchData()
...
},[])
function fetchData() {
setFetching(true);
apiCall().then(() => {
setFetching(false)
})
}
}
Так что это всего лишь мое первоначальное представление о том, как это может работать.Просто маленький пример.Но что произойдет, если у родительского компонента теперь изменилось условие, что этот компонент отключается до завершения асинхронного вызова.
Есть ли какая-нибудь проверка, где я могу проверить, установлен ли компонент до того, как я вызову setFetching(false)
в обратном вызове API?
Или я что-то здесь упускаю?
Вот рабочий пример: https://codesandbox.io/s/1o0pm2j5yq
РЕДАКТИРОВАТЬ: Здесь не было действительно проблемы.Вы можете попробовать это здесь: https://codesandbox.io/s/1o0pm2j5yq
Ошибка произошла из-за чего-то другого, поэтому с перехватчиками вам не нужно проверять, смонтирован ли компонент перед изменением состояния.
Еще одна причина, почему использовать его:)