Redux: Comment répartir plusieurs actions dans un seul créateur d'action

Créé le 1 juin 2015  ·  3Commentaires  ·  Source: reduxjs/redux

J'ai un exemple sur fluce :

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

Comment implémenter le même créateur d'action dans redux? Dois-je créer un créateur d'action pour chaque type d'action ?

Commentaire le plus utile

Je laisserais probablement le créateur d'action retourner une fonction. Si c'est une fonction, on lui donne dispatch et l'état.

Tous les 3 commentaires

Je laisserais probablement le créateur d'action retourner une fonction. Si c'est une fonction, on lui donne dispatch et l'état.

J'ai ajouté la prise en charge des AC asynchrones comme décrit ci-dessus. Pour l'instant, ils ne peuvent pas accéder à l'état - j'y reviendrai probablement à un moment donné, mais je ne veux pas précipiter une API.

Mise à jour : vous pouvez le faire maintenant.

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

    dispatch(increment());
  };
}
Cette page vous a été utile?
0 / 5 - 0 notes