Недавно я столкнулся с проблемой возврата fetch()
и setState()
к неустановленному компоненту, что привело к ошибке.Я ищу простое решение, которое не включает в себя приставку или отмену fetch ().
Частичным решением может быть использование локальной переменной this._isMounted
, которая имеет значение true в componentDidMount
и false в componentWillUnMount
Теперь, если вы выполните:
if (this._isMounted) setState({whatever})
Это почти завершено.Отверстие - это период времени после проверки состояния и до завершения setState ().Есть ли способ с помощью семафоров решить эту проблему.
Например, задержать componentWillUnmount
доступ к this._isMounted
, ожидая setState()
семафор?
Задержка может звучатьплохо и не подходит в некоторых случаях, но семафоры и устаревшие операционные системы кажутся актуальными там, где выполняются асинхронные операции IMO.