Ho iniziato a creare un'applicazione isomorfa React/Redux basata su Node. Uno dei requisiti del progetto è il rendering "adattativo" di componenti specifici basati su una vista "mobile" e "desktop". Ho implementato l'azione Redux e il riduttore per archiviare le informazioni sullo schermo relative alla vista dell'utente (basate su query multimediali "piccole", "medie", "grandi") nello stato. Al ridimensionamento lo stato/il negozio viene aggiornato. Lo stato predefinito è "piccolo".React/Redux isomorphic/server-side rendering e media query
const defaultState = {
isMobile: true,
isTablet: false,
isDesktop: false,
sizes: {
small: true,
medium: false,
large: false,
huge: false,
},
};
Nel componente che deve essere reso "adaptive" in due diverse versioni in base alle dimensioni dello schermo, faccio semplicemente una:
se (piccola) di ritorno variation1
se (media) variazione di ritorno2
Tutto funzionante.
Ora sto affrontando due problemi:
mia app è isomorfo, questo significa che il markup rende anche sul lato server. Il server non sa nulla del browser dell'utente e delle query multimediali. Quindi, poiché il mio stato predefinito è "small", il server render sempre "variation1". Il nodo-server è il punto di ingresso per il sito. Sembra che il rendering debba essere "ritardato" (middleware?) E il server deve recuperare alcune informazioni dal client sulla larghezza del browser prima che l'app React venga "consegnata". Qualche idea su come questo problema possa essere risolto?
perché il rendering si basa sullo stato, dopo che il carico "variazione 1" può essere sempre visto prima per alcuni millisecondi (sfarfallio), anche quando la dimensione del browser è "desktop". Questo perché il rilevamento JS impiega alcuni millisecondi prima che lo stato venga aggiornato con la larghezza dello schermo corrente. Penso che questo funzioni insieme al problema precedente e allo stato predefinito.
Non sono riuscito a trovare alcuna soluzione per 1, ma suppongo che ci deve essere qualcosa di isomorfo E reattivo/adattivo.
Sono curioso di sapere cos'è "variazione1". Non è ancora sicuro se è pertinente alla tua domanda o no, ma la variazione è solo un rendering alternativo della vista, o c'è anche qualcos'altro? –
"Variation 1" e "Variation 2" condividono gli stessi dati, ma la vista sembra diversa e agisce anche in modo diverso. Like 1 è un tipo di fisarmonica e 2 solo un layout statico. Non pertinente alla domanda, penso anch'io. Il problema sopra descritto è più generale. – Krad