woocommerce/plugins/woocommerce-blocks/packages/checkout/components/error-boundary/index.js

44 lines
864 B
JavaScript

/**
* External dependencies
*/
import { Component } from 'react';
class CheckoutSlotErrorBoundary extends Component {
state = { errorMessage: '', hasError: false };
static getDerivedStateFromError( error ) {
if (
typeof error.statusText !== 'undefined' &&
typeof error.status !== 'undefined'
) {
return {
errorMessage: (
<>
<strong>{ error.status }</strong>
{ ': ' + error.statusText }
</>
),
hasError: true,
};
}
return { errorMessage: error.message, hasError: true };
}
render() {
const { renderError } = this.props;
const { errorMessage, hasError } = this.state;
if ( hasError ) {
if ( typeof renderError === 'function' ) {
return renderError( errorMessage );
}
return <p>{ errorMessage }</p>;
}
return this.props.children;
}
}
export default CheckoutSlotErrorBoundary;