@tolokoban/ui
Version:
React components with theme
21 lines • 1.93 kB
JavaScript
import React from "react";
export class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(error) {
console.error("Error catched in the ErrorBoundary:", error);
// Update state so the next render will show the fallback UI.
return { hasError: true };
}
componentDidCatch(error, info) {
var _a, _b;
console.log("🚀 [ErrorBoundary.componentDidCatch()] error, info = ", error, info); // @FIXME: Remove this line written on 2024-06-06 at 10:31
(_b = (_a = this.props).onError) === null || _b === void 0 ? void 0 : _b.call(_a, error, info);
}
render() {
return this.state.hasError ? this.props.fallback : this.props.children;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JCb3VuZGFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9FcnJvckJvdW5kYXJ5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFZekIsTUFBTSxPQUFPLGFBQWMsU0FBUSxLQUFLLENBQUMsU0FHeEM7SUFDRyxZQUFZLEtBQXlCO1FBQ2pDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUE7SUFDcEMsQ0FBQztJQUVELE1BQU0sQ0FBQyx3QkFBd0IsQ0FDM0IsS0FBYztRQUVkLE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDM0QsNkRBQTZEO1FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVksRUFBRSxJQUFxQjs7UUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FDUCx1REFBdUQsRUFDdkQsS0FBSyxFQUNMLElBQUksQ0FDUCxDQUFBLENBQUMsMERBQTBEO1FBQzVELE1BQUEsTUFBQSxJQUFJLENBQUMsS0FBSyxFQUFDLE9BQU8sbURBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFBO0lBQzFFLENBQUM7Q0FDSiJ9