2017-08-22 22 views
1

APIリクエストサイクルのアクションにはどのような方法が推奨されますか?パラメータと複数のアクションを持つReduxアクション

すなわち:私は通常3は

  • 要求が
要求が失敗した(またはエラーを返しました)
  • 要求が正常に終了した(と値を返さ)
  • (応答を待っている)を開始し、手順持っています

    3つのアクションとしてこれらのステップをモデル化できます。

    • RequestDidStartAction
    • RequestDidFinishWithSuccessAction(ここでは、私はアクションのプロパティとしての価値を持っていると思います)
    • RequestDidFinishWithFailureAction(ここでは、私はアクションのプロパティとしてエラーが発生していると思います)

    それとも可能性列挙型の1つのアクションとしてモデル化してください。

    struct RequestAction: Action { 
    
        let state: AsyncRequestState<Value, Error> 
    
    } 
    
    enum AsyncRequestState<S, F> { 
    
        case waiting 
        case success(S) 
        case failure(F) 
    
    } 
    

    どちらが良いですか?それとももっと良い選択肢がありますか?

    Ps .:私はReSwiftを使用していますが、問題はReduxの実装に当てはまると思います。

  • 答えて

    0

    私の意見では、私が読んだことから、最初の実装は正しい方法です。

    アクションは、アプリケーションからストアにデータを送信する情報のペイロードです。ビューの哲学的観点からhttp://redux.js.org/docs/basics/Actions.html

    作用がストアのためのもの情報のペイロードとして内含されているように、それは異なるペイロードを区別するために重要である:彼らは、ストア

    ソースの唯一の情報源であります簡単に。使用の観点からは、アクションを再度確認する必要があるときはいつでも解析することができるネストされたデータセットにすることができます。

    この例の使用例は、削除操作を実行するとUNDOになり、その操作を元に戻したい場合、ACTIONSが多様な場合は大きな助けになります。それは、逆転すべき行動を特定するのに役立ちます。同時に複数のAPIコールが発生した場合、どのアクションがどのAPIであるかを把握しておく必要があります。そのため、アクションを分離しておくことで、ネストされたデータ構造から型をチェックする手間が省けます発生しません。

    +0

    私はあなたに従っているかどうかはわかりません。最初のモデルが2番目のモデルより優れている例を私に示してもらえますか? –

    +0

    これはhttps://github.com/acdlite/flux-standard-actionに役立ちます。これはコミュニティによって作成された標準です。 –

    関連する問題