npm

@thorgate/spa-errors
TypeScript icon, indicating that this package has built-in type declarations

1.0.0-beta.4 • Public • Published

@thorgate/spa-errors

Error handling helpers used by Thorgate project template SPA variant

ErrorBoundary

ErrorBoundary component allows to prevent whole app from crashing on error and can show comprehensive error message instead. Consider using view package instead of using this directly.

import { ErrorBoundary } from '@thorgate/spa-errors';

const App = ({ history, route }) => (
    <ErrorBoundary>
        <SomeComponentThatMightFail />
    </ErrorBoundary>
);

Saving error information into Redux state

This package also provides errorReducer, to use as a common way of saving error information into redux state.

Add error reducer into your reducer.js as part of root (or any other) reducer:

import { errorReducer } from '@thorgate/spa-errors'
import { combineReducers } from 'redux';

export default (history) => combineReducers({
    error: errorReducer,
    otherStuff: someOtherReducer,
});

Then, use in sagas like this:

import { call, put } from 'redux-saga/effects';
import { errorActions } from '@thorgate/spa-errors';

export function* TheSagaOfBjorn() {
    try {
        yield put(errorActions.resetError());
        
        // Do useful stuff here
        yield call(reachValhalla)
    } catch (err) {
        yield put(errorActions.setError(err));
    }
}

And provide error information in connected components:

import React from 'react';
import { connect } from 'react-redux';
import { getError } from '@thorgate/spa-errors';

const BaseErrorInformation = ({error}) => {
    return error ? (
        <div className="error">Bjôrn failed to reach Valhalla: {error.statusCode}.</div>
    ) : null;
};

BaseErrorInformation.defaultProps = {
    error: null,
};

const mapStateToProps = (state) => ({
    error: getError(state),
});

export const ErrorInformation = connect(mapStateToProps)(BaseErrorInformation);

Package Sidebar

Install

npm i @thorgate/spa-errors

Weekly Downloads

16

Version

1.0.0-beta.4

License

MIT

Unpacked Size

15 kB

Total Files

9

Last publish

Collaborators

  • thorgate-main
  • jyrno42
  • metsavaht