Redux: So senden Sie viele Aktionen in einem Aktionsersteller

Erstellt am 1. Juni 2015  ·  3Kommentare  ·  Quelle: reduxjs/redux

Ich habe ein Beispiel für Fluke:

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

Wie implementiere ich denselben Action Creator in Redux? Soll ich für jeden Aktionstyp einen Aktionsersteller erstellen?

Hilfreichster Kommentar

Ich würde wahrscheinlich Action Creator eine Funktion zurückgeben lassen. Wenn es sich um eine Funktion handelt, erhält sie dispatch und den Zustand.

Alle 3 Kommentare

Ich würde wahrscheinlich Action Creator eine Funktion zurückgeben lassen. Wenn es sich um eine Funktion handelt, erhält sie dispatch und den Zustand.

Ich habe die Unterstützung für asynchrone ACs wie oben beschrieben hinzugefügt. Im Moment können sie nicht auf den Status zugreifen. Ich werde wahrscheinlich irgendwann darauf zurückkommen, aber ich möchte keine API überstürzen.

Update: Sie können dies jetzt tun.

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

    dispatch(increment());
  };
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen