Obecnie tworzę stronę internetową, na której użyłem systemu reagowania, routera reakcji i redux. Wykonujemy renderowanie po stronie serwera i za pomocą routera reagujemy również na serwerze. Teraz mam przypadek, w którym chcę, aby strona klienta renderowała inny komponent niż serwer. Chcę tak.Renderuj różne komponenty po stronie klienta i serwera.
Side Client
<Route path="welcome/:id" component={Home} />
Server Side
<Route path="welcome/:id" component={App} />
mam przypadek użycia takiego kiedy użytkownik click to obraz chcę otworzyć modalnego z treścią i polecić obrazów. gdy użytkownik kliknie na polecane obrazy, ten sam modalny powinien wypełnić dane i chcę również zmienić trasę. Ta sama trasa po otwarciu w nowym oknie powinna otworzyć stronę html dla Facebooka i google, aby usunąć z niej metatagi.
Tak więc albo renderuję inny komponent na kliencie i serwerze. Ale to też ma problem, ponieważ wtedy muszę znaleźć sposób na wyłączenie routera reagującego po stronie klienta, gdy serwer obsługuje renderowaną stronę.
Lub po stronie klienta wygenerować zmianę pseudo trasy, która zmienia adres URL, ale nie renderuje komponentu.
Hej @Priyank Bhatt czy znalazłeś sposób, aby to osiągnąć? – davelab
Yup Mam rozwiązanie, ale to głównie hack. Więc to co zrobiłem to. Usuwam całą zawartość z window.intial__state, gdy tylko są w niej zawarte. Używając routera reagującego getComponent, sprawdziłem, czy okno window.intial__ jest puste, jeśli jest to routing uruchamiany od strony klienta, więc wyrenderuj ten komponent. A jeśli window__intialstate nie jest pusty, to wyrenderuj inny komponent.
–'funkcja onUpdate() { jeśli (okno .__ INITIAL_STATE__! == null) { okno .__ INITIAL_STATE__ = null; return; } } ' –