dash-renderer
Version:
render dash components in react
57 lines (56 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _actions = require("../../actions");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class ComponentErrorBoundary extends _react.Component {
constructor(props) {
super(props);
this.state = {
myID: props.componentId,
oldChildren: null,
hasError: false
};
}
static getDerivedStateFromError(_) {
return {
hasError: true
};
}
componentDidCatch(error, info) {
var dispatch = this.props.dispatch;
dispatch((0, _actions.onError)({
myID: this.state.myID,
type: 'frontEnd',
error,
info
}));
dispatch(_actions.revert);
}
componentDidUpdate(prevProps, prevState) {
var prevChildren = prevProps.children;
if (!this.state.hasError && prevChildren !== prevState.oldChildren && prevChildren !== this.props.children) {
/* eslint-disable-next-line react/no-did-update-set-state */
this.setState({
oldChildren: prevChildren
});
}
}
render() {
var _this$state = this.state,
hasError = _this$state.hasError,
oldChildren = _this$state.oldChildren;
return hasError ? oldChildren : this.props.children;
}
}
ComponentErrorBoundary.propTypes = {
children: _propTypes.default.object,
componentId: _propTypes.default.string,
error: _propTypes.default.object,
dispatch: _propTypes.default.func
};
var _default = exports.default = ComponentErrorBoundary;