import React, { Component } from "react"; import PropTypes from "prop-types"; import { Typography } from "@material-ui/core"; const reload = () => { window.location.reload(); }; export default class ErrorBoundary extends Component { state = { error: "", errorInfo: "", hasError: false, }; static getDerivedStateFromError(error) { return { hasError: true, error }; } componentDidCatch(error, errorInfo) { this.setState({ errorInfo }); } render() { if (this.state.hasError) { if (this.state.error && this.state.error.name === "ChunkLoadError") { reload(); return; } return (
Sorry, an error has occured and been logged Click to reload
); } return this.props.children; } } ErrorBoundary.propTypes = { children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired, };