は、私はこのようなコンポーネントを反応 は私が私の中にReduxの非同期アクションに2つのコールバックを渡し、成功/エラー応答のためのさまざまな通知バーを表示したい:callBacksをredux非同期アクションに渡すのは良い方法ですか?
asyncActionはこのようになります<Button
onClick={e => this.props.actions.asyncAction(item, this.showSuccessBar, this.showErrorBar)}
/>
:
export function asyncAction(item, successCallback, errorCallback) {
return (dispatch, getState) => {
dispatch(requestItem(item));
return fetch("api.some_url/items/item")
.then(response => response.json())
.then(json => {
if (json.success) {
dispatch(receivePostsSuccess(reddit, json));
successCallback();
} else {
dispatch(receivePostsFail(reddit, json));
errorCallback();
}
});
}
};
}
これはパターンと考えられますか? つまり、コールバーの代わりに状態の変更に応じて通知バーを開く必要がありますか?
ありがとう、これはかなりうまくいった。また、redux&devtoolsなどの素晴らしい作業に本当に感謝します!私たちはそれらを愛していました:)私も関連する質問がありますhttp://stackoverflow.com/questions/33237712/how-to-undo-redux-async-action-multiple-steps-back-in-the-stateわからないもし私が正しい方向にいたら。 – naifen
@ Dan-Abramovフォローアップ:ディスパッチが約束を返せば、いつ解決するのですか?上の例では、たとえば、asyncActionは、(サンクミドルウェアごとに)約束を返すように見える関数を返します(前にこれらの戻り値を実際に見たことはありませんでしたが、したがって、ディスパッチの上にチェーンを張った場合、その時点でどの点で解決されますか? –
@RubenMartinezJr。私はその質問を理解していない。サンクミドルウェアは、サンクの戻り値(Promise)が 'dispatch'自体から返されるようにします。アクション作成者が決定するたびに解決し、このプロミスの作成方法に依存します。これは役に立ちますか?たぶんあなたは別の質問を作成できます。 –