52

成功/エラー応答に対して異なる通知バーを表示したいので、次のように、反応コンポーネントの redux async アクションに 2 つの callBacks を渡します。

<Button
  onClick={e => this.props.actions.asyncAction(item, this.showSuccessBar, this.showErrorBar)}
/>

asyncAction は次のようになります。

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();
        }
      });
    }
  };
}

これはパターンに反すると考えられますか? つまり、コールバックではなく、状態の変化に応じて通知バーを開く必要がありますか?

4

3 に答える 3

107

パターン自体は問題ありません。これがコンポーネントにローカルな通知である場合は、Redux 経由で配線しないでください。

つまり、すでに約束を返しているため、コールバックは完全に不要です。完了するのを待ちます。

this.props.dispatch(asyncAction(item)).then(onSuccess, onFailure);

ただし、このような通知バーを持つコンポーネントが多数ある場合は、現在の通知を保持し、アクションに反応するリデューサーを用意することをお勧めします。

于 2015-10-16T10:24:10.550 に答える
4

これは双方向のデータ フローであり、フラックスの最初のルールを破ります。

于 2015-10-15T02:21:22.713 に答える
1

smth like という名前のストアを分離しNotificationStore、その周りに通知インフラストラクチャを構築することをお勧めします。コールバックを使用できますが、将来大きな問題が発生する可能性があります。

于 2015-10-15T07:48:07.123 に答える