2016-05-08 15 views
10

So come usare Redux e reagire router per SPA. Mi chiedo come utilizzare il redux in applicazioni web multipagina più tradizionali con framework lato server come MVC, jsp, ecc.Come utilizzare il redux nel sito Web di più pagine?

Più pagine possono condividere lo stesso negozio? Dalla documentazione per il rendering lato server, ogni server di pagine invia ha bisogno di un nuovo negozio.

+0

Ho fatto una domanda simile ieri: http://stackoverflow.com/q/37096921/916450. Nessuna vera risposta (per me), ancora .. –

+0

La risposta corretta di kwelch è sotto. Ogni pagina ha bisogno di una nuova istanza di negozio (che può essere inizializzata con gli stessi dati!) Perché si perde l'intero contesto di runtime javascript (spero che questo sia il termine giusto), con tutte le librerie caricate ecc., Quando si ricarica la pagina. – timotgl

risposta

3

Se si utilizza il rendering lato server (SSR), il client verrà creato un nuovo archivio su ciascun rendering. Viene creato un negozio con un initialState, quindi è possibile mantenere lo stato tra le rotte utilizzando la memorizzazione locale/di sessione o il rendering nella head di una pagina e utilizzato durante la creazione dell'archivio per mantenere lo stato tra diverse applicazioni.

+0

SSR = rendering lato server presumo? Non super ovvio :) – timotgl

+0

Sì, mi dispiace per il fatto che ho aggiornato la risposta. – kwelch

0

Felice di sentire che hai resistito al canto delle sirene di una grande SPA PER TUTTO che qualcuno sta seguendo in questi giorni.

Poiché si stanno avendo più pagine, ciascuna pagina viene considerata come 1 app React indipendente, quindi ciascuna richiede 1 negozio Redux. Tuttavia, in molte pagine della tua app, solo jQuery o puro React potrebbe essere sufficiente. Quindi la mia risposta è semplice: usa Redux su pagine che hanno la gestione dello stato complessa , una ricca interazione con l'utente e una grande richiesta di manutenibilità del codice.

Informazioni sul negozio Redux, non è necessario un archivio condiviso su più pagine poiché si dispone già di quello molto buono che gestisce Internet per decenni: sessione server. Basta compilare questo valore condiviso su windows.__INITIAL_STATE__ ogni volta che le pagine vengono renderizzate. cookie, local storage, ... sono alcune alternative ma non penso che siano davvero necessarie.

+0

Non penso che sia un buon consiglio servire un diverso frontend stack su pagine diverse (come nella pagina A serve react, redux e jquery, la pagina B serve solo a reagire, ecc.). Il browser memorizza il bundle js nella produzione in ogni caso e aggiunge uno strato di complessità non necessario per differenziare le pagine. A meno che non stiamo parlando di diverse * applicazioni * su diverse pagine qui. – timotgl

+0

Amico, stiamo parlando di una pagina diversa, quindi inutile dire su SPA come tutti già sapevano. Continuo a credere che tu possa ancora 'jQuery' o anche' vanillajs' su pagine semplici. Usa gli strumenti giusti nei posti giusti. Smetti di usare 'reagisci' per tutto! – haotang

Problemi correlati