Come evitare le azioni get / set in redux?

0

Il punto di passaggio è disaccoppiare "cosa è successo" da "come cambia lo stato" secondo Dan, comunque , ma ho difficoltà a capire come gestire gli effetti collaterali senza getter e setter.

Ecco dove sono ora:

  • L'utente inserisce email + password e tocca "accedi"
  • L'app si spegne {type: "USER / LOGIN", payload: {email, password}}
  • Il middleware vede "USER / LOGIN" e fa una richiesta HTTP
  • Reducer vede "USER / LOGIN" e aggiorna lo stato al recupero

QUESTO È DOVE OTTIENE LO STUCCO

Ecco come lo sto consegnando ora, ma mi sembra di fare qualcosa di sbagliato:

  • La risposta ritorna
  • Se otteniamo un utente, inviamo {type: "USER / LOAD", payload: {...}}
  • Se non lo facessimo, invia {type: "USER / ERROR", payload: {...}}

È giusto?

    
posta drewwyatt 07.01.2017 - 23:14
fonte

1 risposta

1

È vicino, ma no.

Il problema principale sta nel modo in cui si avvia l'azione asincrona. La gestione della risposta è completamente corretta.

Fondamentalmente, stai sparando un'azione per significare "Fai questa speciale altra cosa", e questo è sbagliato. Dovresti aggiornare lo stato per indicare "Fai questa speciale altra cosa". Quindi può essere aggiornato da qualsiasi azione in qualsiasi situazione tu abbia bisogno.

  • L'utente inserisce email + password e tocca "accedi"
  • L'app si spegne {type: "USER / LOGIN", payload: {email, password}}
  • Reducer vede "USER / LOGIN" e aggiorna lo stato al recupero
  • Il middleware vede che lo stato era in "unfetched" e ora è in "fetching" e fa una richiesta HTTP

Come ulteriore generalizzazione, abbiamo utilizzato una continuazione: in pratica, memorizzi un'azione sullo stato del negozio e attiva anche quella. Questo è un po 'un modo Redux di fare promise.then ().

    
risposta data 07.01.2017 - 23:24
fonte

Leggi altre domande sui tag