Я начну с того, что на самом деле я не пытаюсь скрыть ошибки, я собираюсь их исправить, но мне нужно знать, возможно ли это.
Я переписываю реактивный проект с .net back end, переходя от фреймворка к ядру.
У меня есть два компонента (один в исходном проекте и один в новом проекте), которые по сути одинаковы.
Это модальное устройство, которое при открытии собирает и отображает статью.
Если модальное окно закрыто, компонент отключается, и если это происходит до того, как данные статьи возвращаются (с использованием fetch), он в настоящее время выдает ошибку, поскольку пытается обновить состояние не подключенного компонента.
Такое поведение ожидается.
В новом проекте я собирался добавить AbortController для прерывания вызова выборки, когда это необходимо, но я заметил, что в старом проекте, когда закрытие модального режима перед сбором данных не выдает ошибку. Компонент размонтируется, затем состояние обновляется, но по какой-то причине я не получаю сообщение об ошибке.
Нет переменной isMounting, отслеживающей состояние монтирования, и нет контроллера прерывания.
Я добавил журналы консоли для каждого соответствующего метода, чтобы убедиться, что он был отключен перед обновлением состояния.
старый вывод на консоль проекта
вывод новой консоли проекта
Может ли что-то скрывать эти ошибки? Или помешать действию все вместе?
оба проекта используют реакцию 16, но на старые проекты ссылаются извне (https://unpkg.com/react@16/umd/react.development.js), а новый предоставляется через npm (^ 16.8.6).
вот соответствующий код из старого проекта, так как это тот, где ошибки не создаются (новый проект практически такой же)
componentDidMount() {
fetch(`{url to get article}`,
{ credentials: "include", headers: { accept: "application/json" } })
.then(res => res.json())
.then(gatheredData => this.setState({ gatheredData }))
}
нет компонентаWillUnmount.