Ответ 1
React 16 представляет новую концепцию, называемую "граница ошибок", для обработки ошибок, возникающих внутри компонентов React, без нарушения целостности всего приложения.
Границами ошибок являются компоненты React, которые перехватывают ошибки JavaScript в любом месте своего дочернего дерева компонентов, регистрируют эти ошибки и отображают резервный интерфейс вместо сбойного дерева компонентов.
Компоненты границ ошибок стали возможными благодаря новому методу жизненного цикла componentDidCatch(error, info)
. В отличие от других методов жизненного цикла, он будет вызываться, только если возникла какая-либо ошибка во время рендеринга, в методах жизненного цикла или в конструкторах какого-либо дочернего (включая все дочерние) компонента компонента.
В коде компонент Error Boundary будет выглядеть примерно так:
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
componentDidCatch(error, info) {
// Display fallback UI
this.setState({ hasError: true });
}
render() {
if (this.state.hasError) {
// You can render any custom fallback UI
return <h1>Error occurred!</h1>;
}
return this.props.children;
}
}
Мы можем использовать этот компонент Error Boundary как обычный компонент в нашем коде.
<ErrorBoundary>
<MyComponent />
</ErrorBoundary>
Теперь, если MyComponent генерирует какую-либо ошибку JavaScript во время рендеринга, в методе жизненного цикла или при создании, componentDidCatch
Error Boundary сработает и изменит состояние, чтобы показать, что Error occurred!
сообщение вместо сломанного MyComponent.
Эта новая функциональность имеет еще одно важное значение, о котором вы хотели знать до перехода на React 16. Ранее, если возникает ошибка, она оставляет поврежденный пользовательский интерфейс, даже если обычно не работает должным образом, пока вы не перезагрузите страницу. Однако в React 16, если ошибка не обработана какой-либо границей ошибки, это приведет к размонтированию всего приложения.
Из-за этого добавление границ ошибок в ваше приложение соответствующим образом улучшит работу вашего пользователя. Таким образом, пользователи смогут взаимодействовать с частью вашего приложения, даже если некоторые области пользовательского интерфейса потерпели крах.
Для получения дополнительной информации обратитесь к официальной документации React о границах ошибок или к официальному сообщению в блоге Они охватывают почти все, что вам нужно знать об этой новой функции.