Redux: 1人のアクションクリエーターで多くのアクションをディスパッチする方法

作成日 2015年06月01日  ·  3コメント  ·  ソース: reduxjs/redux

私はフルースに関するいくつかの例があります:

function authFormSubmit(fluce) {
  const {valid, disabled, data: {username, password}} = fluce.stores.authForm

  if (disabled) return

  if (!valid) {
    fluce.dispatch(AUTH_FORM_ERROR, new Error('Form is invalid'))
    return
  }

  fluce.dispatch(AUTH_FORM_DISABLED, true)
  fluce.dispatch(AUTH_FORM_ERROR, null)

  authorize({username, password})
    .then(
      user => fluce.dispatch(CURRENT_USER, user),
      error => fluce.dispatch(AUTH_FORM_ERROR, error)
    )
    .then(
      () => fluce.dispatch(AUTH_FORM_DISABLED, false)
    );
}

同じアクションクリエーターをreduxに実装するにはどうすればよいですか? すべてのアクションタイプに対してアクションクリエーターを作成する必要がありますか?

最も参考になるコメント

おそらくアクションクリエーターに関数を返させたいと思います。 関数の場合は、 dispatchと状態が与えられます。

全てのコメント3件

おそらくアクションクリエーターに関数を返させたいと思います。 関数の場合は、 dispatchと状態が与えられます。

上記のように非同期ACのサポートを追加しました。 今のところ、彼らは状態にアクセスできません。おそらくいつか戻ってくるでしょうが、APIを急いでやりたくありません。

更新:あなたは今これを行うことができます。

// Could also look into state in the callback form
export function incrementIfOdd() {
  return (dispatch, state) => {
    if (state.counterStore.counter % 2 === 0) {
      return;
    }

    dispatch(increment());
  };
}
このページは役に立ちましたか?
0 / 5 - 0 評価