- Hands-On Design Patterns with React Native
- Mateusz Grzesiukiewicz
- 314字
- 2021-08-13 15:13:01
Introduction to error boundaries
This is quite an overlooked feature that came with React version 16. As you should already know, JavaScript can throw errors. Such errors should not break your app, especially if it is from the financial sector. The regular imperative solution from JavaScript is a try-catch block:
try {
// helloWorld function can potentially throw error
helloWorld();
} catch (error) {
// If helloWorld throws error
// we catch it and handle gracefully
// ...
}
This approach is hard to use with JSX. Hence, the React team developed an alternative solution for React views. It's called Error Boundaries. Any class component can become an ErrorBoundary component, given that it implements the componentDidCatch function:
class AppErrorBoundary extends React.Component {
state = { hasError: false };
componentDidCatch() {
this.setState({ hasError: true });
}
render = () => (
this.state.hasError
? <Text>Something went wrong.</Text>
: this.props.children
)
}
export default () => (
<AppErrorBoundary>
<LoginForm />
</AppErrorBoundary>
)
LoginForm is now wrapped into ErrorBoundary. It catches any error that occurs while rendering LoginForm. If Error is caught, we display a short message stating that Something went wrong. We can get a real error message from the error object. However, it is not good practice to share it with the end user. Instead, send it to your analytics server:
// Chapter 2_View patterns/Example 11/ App.js
...
componentDidCatch(error) {
this.setState({
hasError: true,
errorMsg: error
});
}
render = () => (
this.state.hasError
? (
<View>
<Text>Something went wrong.</Text>
<Text>{this.state.errorMsg.toString()}</Text>
</View>
)
: this.props.children
)
...
- JavaScript:Functional Programming for JavaScript Developers
- Python數據分析基礎
- 深入淺出Electron:原理、工程與實踐
- PHP 編程從入門到實踐
- Getting Started with Gulp
- Corona SDK Mobile Game Development:Beginner's Guide(Second Edition)
- Mastering Akka
- R語言數據可視化:科技圖表繪制
- uni-app跨平臺開發與應用從入門到實踐
- Python Web自動化測試設計與實現
- Python預測分析實戰
- Python機器學習開發實戰
- Deep Learning for Natural Language Processing
- Microsoft HoloLens By Example
- Flask開發Web搜索引擎入門與實戰