2016-05-08 17 views
6

Sto usando React + Redux, e dopo aver letto circa react-router-redux e redux-router, e dopo aver letto Dan Abramov's answer, ho deciso di utilizzare il router di risposta "vanilla" (a questo punto non mi interessa il viaggio nel tempo ecc.).React + Redux + Router - dovrei usare uno stato/negozio per tutte le pagine/componenti?

L'unica domanda lasciata è come gestire lo stato attraverso percorsi diversi. Ogni sottoalbero del percorso può essere una sezione diversa e indipendente nella mia applicazione (specialmente quando diventa più grande). È ancora buona norma avere un negozio per gestire tutti i percorsi/pagine? Non dovrei (almeno) avere un negozio/stato diverso per ogni percorso principale?

Penso che i percorsi dovrebbero essere una sorta di apolidi e indipendenti, il che significa che se vado direttamente a uno dei miei collegamenti, dovrebbe funzionare e non sarà a conoscenza di altri percorsi fratelli. Dovrei rifletterlo nel mio negozio?

Modifica

Dopo un po 'di più il pensiero, credo che l'utilizzo di diversi "CombineReducers" riduttori + farà il trucco. L'unica cosa che resta da per me per verificare è quello stato degli ex percorsi non persiste durante la navigazione

risposta

2

Su delle possibili soluzioni per verificare che lo stato di ex percorsi non persistono:

componenti di primo livello in ogni itinerario stanno montando e smontando quando l'utente naviga tra le pagine. È possibile utilizzare i loro metodi di ciclo di vita per inviare eventuali eventi di redux per pulire il tuo stato.

Ad esempio, inviare CLEAN_STATE da componentWillUnmount. Dovresti catturare questo evento nel tuo livello iniziale del riduttore finale. Per farlo è possibile chiamare manualmente tutti i riduttori nidificati con undefined come parametro di stato. In tal caso, ciascun riduttore restituirà il suo stato iniziale.

+1

Ok. Non è una specie di soluzione hackie? Mi chiedo se c'è una soluzione più pulita per questo ... –

+1

Ciao solo un altro consiglio. Dai un'occhiata alla suddivisione del codice all'interno del webpack. Un fantastico kit che fa quello che descrivi è il kit di avvio di Redux. Potrebbe valere la pena esaminarlo anche solo per avere un'idea di un possibile modo di farlo. – Deep

+0

@Deep Grazie, ne ho sentito parlare, ci vorrà dare un'occhiata! –

Problemi correlati