reactxコードを簡略化するためにredux-actionsを使いたいのですが、私は質問があります:還元アクションによるREQUEST/STARTアクションの表現方法は?
私は「リモート」からいくつかのトピックをフェッチする "ロード"アクションがあると言います。そのコードは次のようになります。
const load = createActions('LOAD');
export function fetch() {
return (dispatch, getState) => {
dispatch(fetchTopicsRequest()); // <- here is my question.
return network
.request('/topics?' + qs.stringify(getState().topics.filter.options))
.then(network.handleResponse)
.then(result => dispatch(load(result))) // <- here I got the topics in the payload
.catch(error => dispatch(load(error))); // <- here I got the errors in the payload, in the reducer I check on the "error" field to see if the request successed.
};
}
私はそれが結果やエラーワンアクションで派遣されてを持って良いことだと思います。しかし、同じアクションでステータスを「要求する」ことはどうですか?上記のコードのように、私はそれを理解しなかったので、別のアクション "fetchTopicsRequest()"を作らなければなりません。これはコード全体が変わっているように見えます。
私は初期の不調から「ステータス」フィールドがあることに気付きました。そのような場合には便利かもしれません。それはどこに行きましたか?または私はちょうど良いアイデアを逃した?
おかげ
ああ、あなたの権利。私はさらにそれを修正することができます: 'load(result)'と 'load(error)'もアクションクリエータです。本当のアクションは普通のオブジェクトが実際にディスパッチされたことです。 私が言いたいのは、アクションのステータスを表す 'error'フィールドがありますが、'保留中 'ステータスを表す方法がないことです。私がそのような地位を知る必要がある場合、それを表現する最善の方法は何ですか? –
このようなケースを処理する最善の方法は、アクションとレデューサーのコンボを使用することです。したがって、 '' FETCHING_TOPICS''アクションをディスパッチしているときは、あなたのレデューサーで '' '' '' ''とマークして、 '' 'result'' ''または '' '' ''のアクションを実行すると、あなたのレデューサーの '' '' '' '' '' ''に '' '' '保留中' 'を変更できます。私は答えをもう少し冗長に更新します。 –
申し訳ありません。私は、私が「還元行為」について話していることを明確にしていないと思う。ボイラープレートコードを減らすためのライブラリ私は3つのアクションのパターンを知っている、私はちょうど私のコードベースを簡素化するためにreduxアクションを使用したい。 –