Ho un'app Redux con un albero di stato abbastanza piatto. Tutti i sub-riduttori gestiscono una parte separata dello stato e sono collegati insieme a combineReducers
.
Il mio problema è che in alcuni casi ho bisogno di accedere allo stato part A
nel sub-riduttore per stato parte B
. La Domande frequenti su Redux ha una sezione su questo, con tre suggerimenti:
- Riorganizza l'albero di stato.
- Non utilizzare
combineReducers
. - Utilizza i thunk per inviare azioni con le parti pertinenti dello stato in esse.
Per me, # 1 non è un'opzione dal momento che il mio albero è già altamente normalizzato. Sento che # 2 renderebbe il mio codice straordinariamente complesso solo per gestire un caso limite. Quindi attualmente sto andando con # 3, ma non mi piace molto. Per me, ha più senso mantenere la logica che descrive come il nuovo stato dipende dal vecchio stato nei riduttori e non dai creatori di azioni.
Questo mi ha portato a considerare una quarta opzione, vale a dire scrivere il mio combineReducersWithFullState
che dà ai subiduttori la seguente firma:
(localState, action, fullState) => newLocalState
Questa è una cattiva idea? Sto istituzionalizzando un anti-modello qui?