Best practices for handling errors in React using error boundaries
When using a component, if any error occurs within the component code, React will unload the entire React component tree and renderNo. This is the React method of handling crashes.
You don’t want the error to be shown to your users. React decides to display a blank page.
However, this is only the default setting. Showing a blank page is only better than showing a secret message to the user, but you should have a better way.
If you are in development mode, any error will trigger a detailed stack trace, printed toBrowser DevToolscomfort. But, of course not in a production environment, you don't actually want to print errors to users.
In production, you should intercept errors and display some kind of useful information to the people who use the application.
This is whereError boundaryJoin in.
With error boundaries, you can isolate parts of the application and handle errors locally.
The error boundary is a React component that implementscomponentDidCatch()
Life cycle events, and package other components:
class ErrorHandler extends React.Component {
constructor(props) {
super(props)
this.state = { errorOccurred: false }
}
componentDidCatch(error, info) {
this.setState({ errorOccurred: true })
logErrorToMyService(error, info)
}
render() {
return this.state.errorOccurred ? <h1>Something went wrong!</h1> : this.props.children
}
}
In the component JSX, you can use it like this:
<ErrorHandler>
<SomeOtherComponent />
</ErrorHandler>
When an internal error occursSomeOtherComponent
Or other subcomponents, and the entire component subtree they have,ErrorHandler
It will be intercepted, and you can handle the error gracefully.
In the above case, inspired by the official React documentation, we have aerrorOccurred
The state property, when set to true, will make the interface present the error handling UI, otherwise it will present the normal application UI tree.
insidecomponentDidCatch()
, It receives 2 parameters describing the error, which we also calllogErrorToMyService()
This is just a stub of some function, which uses services such as Sentry, Roller, Airbrake or other services that can record errors well for you to check, so you don't have to rely on the user to tell you that there is an error to pay attention to a problem.
Download mine for freeResponse Handbook
More response tutorials:
- A simple React application example: Get GitHub user information through API
- Build a simple counter with React
- VS Code setup for React development
- How to pass props to child components through React Router
- Create an application using Electron and React
- Tutorial: Create a spreadsheet with React
- Roadmap for learning React
- Learn how to use Redux
- Getting started with JSX
- Stylized components
- Introduction to Redux Saga
- Introduction to React Router
- Introduction to React
- Reaction component
- Virtual DOM
- Reaction event
- Reaction state
- Reaction props
- Reaction fragment
- React Context API
- Reaction PropTypes
- Reaction Concept: Declarative
- React: How to display other components when clicked
- How to loop inside React JSX
- Props and status in React
- Should you use jQuery or React?
- How much JavaScript do I need to know to use React?
- Gatsby Introduction
- How to reference DOM elements in React
- One-way data flow in React
- React high-end components
- React to life cycle events
- Reaction concept: immutability
- Reaction concept: purity
- Introduction to React hooks
- Introduction to create-react-app
- Reaction concept: composition
- React: demo component and container component
- Code splitting in React
- Server-side rendering with React
- How to install React
- CSS in React
- Use SASS in React
- Processing forms in React
- Reaction strict mode
- Reaction portal
- React rendering props
- Test React components
- How to pass parameters to event handlers in React
- How to deal with errors in React
- How to return multiple elements in JSX
- Conditional rendering in React
- Reaction, how to transfer props to subcomponents
- How to get the value of an input element in React
- How to use useState React hook
- How to use useCallback React hook
- How to use useEffect React hook
- How to use useMemo React hook
- How to use useRef React hook
- How to use useContext React hook
- How to use useReducer React hook
- How to connect your React app to the backend of the same source
- Reaching the router tutorial
- How to use React Developer Tools
- How to learn React
- How to debug a React application
- How to render HTML in React
- How to fix `dangerouslySetInnerHTML` does not match the error in React
- How can I solve the problem of React login form status and browser auto-fill
- How to configure HTTPS in React application on localhost
- How to fix the "Component cannot be updated while rendering other components" error in React
- Can I use React hooks within the conditions?
- Using useState with objects: how to update
- How to move in code blocks using React and Tailwind
- React, focus on an item in React when added to the DOM
- Response, edit text on doubleclick