2015-10-19 9 views

risposta

40

In universal apps, occorrerà un'istanza di negozio diversa per ogni richiesta. Se si esporta solo l'archivio come un singleton da qualche modulo, sarà difficile aggiungere il rendering del server.

Questo è il motivo per cui non incoraggiamo mai il negozio singleton nei documenti e incoraggiamo sempre l'utente a utilizzare <Provider> per passarlo lungo la gerarchia tramite React context. Ciò rende lo store disponibile per i componenti che consumano senza renderlo un singleton.

Per quanto riguarda il motivo per cui connect() da Reagire Redux passa dispatch come puntello al posto di store stessa, è perché non si ha realmente bisogno per sé store nei componenti collegati. Lo stato di sottoscrizione e lettura viene effettuato da connect() in modo da avere sempre solo bisogno di dispatch() nei componenti.

+0

Come si accede al negozio da un creatore di azioni, ad esempio, se non è un singleton? Stavo pensando di avere un modulo negozio che esporta rispettivamente un singleton e una factory per l'utilizzo lato client e lato server. – orourkedd

+0

@orourkedd Perché vuoi accedere al negozio nei creatori di azioni? –

+0

Ci stavo pensando e ora credo che sia un cattivo schema accedere al negozio nei creatori di azioni o in qualsiasi altro modo globale/singleton. – orourkedd

1

Di solito trovo che il negozio è inizializzato in un modulo di livello superiore e quindi utilizzato nei moduli di livello inferiore tramite la funzione di connessione react-redux.

Ciò impedisce la necessità di importare lo store direttamente in un modulo di livello inferiore, in quanto sarebbe importato dal livello superiore.

Problemi correlati