Что я понял отсюда:
componentDidCatch
:
- всегда вызывается в браузере
- вызывается во время "фазы фиксации", когда DOM уже обновлен
- следует использовать для чего-то вроде сообщения об ошибках
getDerivedStateFromError
:
- также вызывается во время рендеринга на стороне сервера
- вызывается перед "фазой фиксации", когда DOM еще не обновлен
- должен использоваться для рендеринга резервного интерфейса
Тем не менее, я немного запутался в некоторых вещах:
- они оба ловят один и тот же тип ошибок? или каждый жизненный цикл будет ловить разные ошибки?
- я должен всегда использовать оба (в том же самом компоненте "ловли ошибок" возможно)?
- "использование componentDidCatch для восстановления после ошибок не является оптимальным, потому что оно заставляет резервный интерфейс всегда отображаться синхронно", что с этим не так?