Reduxレデューサーでエラーと例外を処理する方法は?

ホーン

現在、React / Reduxアプリでエラー処理をテストしています。(私はすでにhttps://github.com/reduxjs/redux/issues/1960を読んでいます)。ReactではErrorBoundariesを実装しましたが、これは非常にうまく機能しています。未処理の例外のための空のページはもうありません。

いいえ、Reducersでエラーをスローしようとしましたが、そのままのredux状態でコンソールに記録されています。

レデューサーは純粋でなければなりません!

私は間違いなくこれをサポートすることができます。機能は「簡単」で、副作用がなく、十分にテストされている必要があります。重要なのは、レデューサーの開発者が誤った仮定をする可能性があるということです(たとえば、redux状態のプロパティが未定義になる可能性があります)。この例では、

[Error] Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'someVariableWithCanBeNullOrUndefined.someFunction')

議論することができます:少なくとも白いページはありません。しかし、アクションがすべてディスパッチされて実行されたが、正しく削減されなかったため、アプリの状態は少し厄介です。この種のエラーは簡単に監視できます。これらのプログラミングランタイムエラーを処理する方法はありますか?たぶん、ReactのErrorBoundaryでそれらを提示することさえできますか?

ログエントリのみを生成する誤ったレデューサー関数の例:

reduceSomeState(state = new SomeState(), action: SomeAction) {
    throw new Error('some runtime error: e.g. a value in the state is undefined and accessed here');
}
ホーン

私の知る限り、例外はレデューサーで処理できませconnect(mapStateToProps, mapDispatchToProps)(View)

解決策はグローバルエラーハンドラーを設定することですが。次のようになります。

import * as React from 'react';
import {render} from 'react-dom';
import {GlobalErrorView} from '../../globalError/GlobalErrorView';

window.onerror = (event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error) => {

    render(
        (
            <GlobalErrorView
                error={error}
                okAction={() => window.location.reload()}
            />
        ),
        document.getElementById('app') as HTMLElement
    );
};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Reduxレデューサーでツリー型エンティティを処理する方法は?

分類Dev

レデューサーでredux-form / CHANGEを処理する方法

分類Dev

RxJava 2でエラー例外を処理する方法は?

分類Dev

レデューサーでアクションを処理する方法は?

分類Dev

RESTful Spring MVCコントローラーで検証エラーと例外を処理する方法は?

分類Dev

サーブレットで例外を処理する方法は正しい

分類Dev

Reduxサンクでfetch()応答のエラーを処理する方法

分類Dev

ExpressNodejsでボディパーサーエラーを処理する方法

分類Dev

シェルスクリプトでエラー/例外を処理する方法は?

分類Dev

RubyでJSONパーサーエラーを処理する方法

分類Dev

非同期Kafkaプロデューサーで例外を処理する方法を区別する

分類Dev

Android WebViewで「内部サーバーエラー」を処理する方法は?

分類Dev

リサイクラービューで空のデータを処理する方法は?

分類Dev

Redux-Sagaでfetch()応答のエラーを処理する方法は?

分類Dev

AngularJSで$ resourceサービスエラーを処理する方法

分類Dev

Amazon SQSでデッドレターキューを処理する方法は?

分類Dev

Spring Kafkaフレームワークの使用中にエラー/例外を処理する方法は?

分類Dev

React-NativeとRedux:レデューサーを再利用して複数のコンポーネントを処理する方法

分類Dev

コンシューマー例外をackとして処理する方法は?

分類Dev

私の子プロセスは、例外を処理してもエラーメッセージなしでサイレントにクラッシュします

分類Dev

サーバーレスでcustomRoleを処理する方法は?

分類Dev

Typescriptを使用してReduxレデューサー関数内に徹底的なswitchステートメントを実装するにはどうすればよいですか?Reduxの内部@@ reduxアクションを処理する方法

分類Dev

Pythonで「トレースバック」エラーを処理する方法は?

分類Dev

ビューリソースでXML解析例外を処理する方法は?

分類Dev

Javaコードで未処理の例外エラーを削除する方法

分類Dev

Backbone.jsでサブビューの初期化とレンダリングを処理する方法は?

分類Dev

Apache Beamで、パイプライン-IOレベルで例外/エラーを処理する方法

分類Dev

画像生成サーブレットからの例外を処理する方法は?

分類Dev

サブポピュレーションを処理するときのSQLクエリ構文エラー

Related 関連記事

  1. 1

    Reduxレデューサーでツリー型エンティティを処理する方法は?

  2. 2

    レデューサーでredux-form / CHANGEを処理する方法

  3. 3

    RxJava 2でエラー例外を処理する方法は?

  4. 4

    レデューサーでアクションを処理する方法は?

  5. 5

    RESTful Spring MVCコントローラーで検証エラーと例外を処理する方法は?

  6. 6

    サーブレットで例外を処理する方法は正しい

  7. 7

    Reduxサンクでfetch()応答のエラーを処理する方法

  8. 8

    ExpressNodejsでボディパーサーエラーを処理する方法

  9. 9

    シェルスクリプトでエラー/例外を処理する方法は?

  10. 10

    RubyでJSONパーサーエラーを処理する方法

  11. 11

    非同期Kafkaプロデューサーで例外を処理する方法を区別する

  12. 12

    Android WebViewで「内部サーバーエラー」を処理する方法は?

  13. 13

    リサイクラービューで空のデータを処理する方法は?

  14. 14

    Redux-Sagaでfetch()応答のエラーを処理する方法は?

  15. 15

    AngularJSで$ resourceサービスエラーを処理する方法

  16. 16

    Amazon SQSでデッドレターキューを処理する方法は?

  17. 17

    Spring Kafkaフレームワークの使用中にエラー/例外を処理する方法は?

  18. 18

    React-NativeとRedux:レデューサーを再利用して複数のコンポーネントを処理する方法

  19. 19

    コンシューマー例外をackとして処理する方法は?

  20. 20

    私の子プロセスは、例外を処理してもエラーメッセージなしでサイレントにクラッシュします

  21. 21

    サーバーレスでcustomRoleを処理する方法は?

  22. 22

    Typescriptを使用してReduxレデューサー関数内に徹底的なswitchステートメントを実装するにはどうすればよいですか?Reduxの内部@@ reduxアクションを処理する方法

  23. 23

    Pythonで「トレースバック」エラーを処理する方法は?

  24. 24

    ビューリソースでXML解析例外を処理する方法は?

  25. 25

    Javaコードで未処理の例外エラーを削除する方法

  26. 26

    Backbone.jsでサブビューの初期化とレンダリングを処理する方法は?

  27. 27

    Apache Beamで、パイプライン-IOレベルで例外/エラーを処理する方法

  28. 28

    画像生成サーブレットからの例外を処理する方法は?

  29. 29

    サブポピュレーションを処理するときのSQLクエリ構文エラー

ホットタグ

アーカイブ