Liebevolle Razzle, so ein tolles Werkzeug.
Ich habe ein Problem, bei dem ich Material UI einrichte und alles funktioniert _fantastisch_, außer einer Sache: Wenn ich eine Unterseite besuche und die Seite aktualisiere, bekomme ich eine Seite mit nur minimalen Stilen. Es ist eigentlich ein faszinierender Fehler, denn je nachdem, welche Seite seit dem letzten yarn start
geöffnet war, würde diese Seite nur dann richtig gerendert, wenn sie aktualisiert wurde, aber wenn ich navigiere und aktualisiere, funktioniert sie nicht (auch nicht im Stammpfad).
yarn start
http://localhost:3000/blog-posts
yarn start
Ich habe yarn build && yarn start:prod
ausprobiert und das System läuft, aber nur mit minimalen Stilen. Wenn ich jedoch einen Link finde und darauf klicke, sieht die gesamte Anwendung wieder schön aus.
Ich gehe davon aus, dass es sich um ein Problem mit Hydrat oder vielleicht einer Kombination daraus und @material-ui/core/styles/withStyles
. Hat jemand von euch dieses Problem?
Die Klassen sind beim nachfolgenden Laden der Seite unterschiedlich ( gerendertes HTML ), was bedeutet, dass dies wahrscheinlich mit dem anfänglichen Laden isomorpher Stile / Klassen zusammenhängt, von denen ich weiß, dass sie sich auf die folgenden Diskussionen beziehen:
Wie meine Situation oben zeigt, scheint es jedoch manchmal zu funktionieren, was mich denken lässt, dass es näher ist, als diese Diskussionen es erscheinen lassen. Die Gedanken?
Hahahaha ich hatte das gleiche Problem mit Material UI in Razzle 😢
@CharlyJazz Das ist sehr (de|ent)mutigend. Haha, hast du versucht, weg von ihrer withStyles
Implementierung und hin zu den isomorphen Klassen?
Man könnte meinen, nach langen mühsamen Stunden der Recherche und des Debuggens wäre es etwas erfreulicher, aber die Lösung besteht im Wesentlichen darin, after.js, React-jss zu verwenden, dein eigenes Document
generieren und dann die Zeile am Ende dieses Threads (über MuiThemeProvider, der nur MUI-bezogen ist):
static async getInitialProps({ assets, data, renderPage }) {
const generateClassName = createGenerateClassName()
const jss = create(jssPreset())
const page = await renderPage(App => props => (
<JssProvider jss={jss} generateClassName={generateClassName}>
<MuiThemeProvider sheetsManager={new Map()}>
<App {...props} />
</MuiThemeProvider>
</JssProvider>
))
return { assets, data, ...page }
}
Mögen Sie alle den Schmerz vermeiden. :P
@jaredpalmer @jylinman Ist es nicht möglich, ein Beispiel dafür für die Razzle-Dokumentation zu erstellen?
Allen anderen, die dieses Problem haben, kann ich wärmstens empfehlen, die offiziellen Material-UI-SSR-Dokumente zu befolgen: https://material-ui.com/guides/server-rendering/
Hilfreichster Kommentar
Man könnte meinen, nach langen mühsamen Stunden der Recherche und des Debuggens wäre es etwas erfreulicher, aber die Lösung besteht im Wesentlichen darin, after.js, React-jss zu verwenden, dein eigenes
Document
generieren und dann die Zeile am Ende dieses Threads (über MuiThemeProvider, der nur MUI-bezogen ist):Mögen Sie alle den Schmerz vermeiden. :P