Ich entwickle derzeit eine Website, wo ich reagiere, reagiere-Router und redux. Wir machen Server-Side-Rendering und verwenden auch den Router auf dem Server. Jetzt habe ich einen Fall, wo ich möchte, dass Client-Seite andere Komponenten als Server-Seite rendern. Ich will so.Render verschiedene Komponenten auf Client-und Server-Seite
Client Side
<Route path="welcome/:id" component={Home} />
Server Side
<Route path="welcome/:id" component={App} />
I Use Case wie, wenn Benutzer klicken Sie ist ein Bild, das ich möchte eine modale mit Inhalt öffnen und Bilder empfehlen. Wenn der Benutzer auf empfohlene Bilder klickt, sollte das gleiche Modal die Details ausfüllen und ich möchte auch die Route ändern. Die gleiche Route, wenn in einem neuen Fenster geöffnet wird, sollte eine HTML-Seite für Facebook und Google öffnen, um Meta-Tags daraus zu entfernen.
Also ich render entweder andere Komponente auf Client und Server. Aber das hat auch ein Problem, denn dann muss ich eine Möglichkeit finden, Client-Seite reagieren Router deaktivieren, wenn Server die gerenderte Seite dient.
Oder in Client-Seite eine Pseudo-Route ändern, die URL ändert, aber keine Komponente darstellt.
Hey @Priyank Bhatt hast du einen Weg gefunden, dies zu erreichen? – davelab
Yup Ich habe die Lösung, aber es ist meistens ein Hack. Also was ich getan habe ist. Ich entferne alle Inhalte von window.intial__state, wenn sie Inhalte enthalten. Und mit react-router getComponent habe ich überprüft, ob der window.intial__state leer ist, wenn dann das Routing von der Client-Seite ausgelöst wird, also rendere diese Komponente. Und wenn window__intistate nicht leer ist, rendern Sie andere Komponenten.
–'Funktion onUpdate() { if (Fenster .__ INITIAL_STATE__! == null) { Fenster .__ INITIAL_STATE__ = null; Rückkehr; } } ' –