Ich rende meine Website Server-Seite mit ReactJS + Router und viele meiner Komponenten machen einen REST-Aufruf, um Inhalte zu generieren. Dieser Inhalt wird nicht als HTML-Serverseite gesendet, da es sich um einen Async-Aufruf handelt.
Eine Komponente, die so aussehen könnte:
%Vor%Eine Suchmaschine würde "Loading ..." indizieren, während ich offensichtlich möchte, dass meine Elemente (Elemente) indiziert werden. Gibt es eine Möglichkeit, das zu lösen?
Theoretisch denke ich, um dies zu erreichen, benötigen Sie einen Server-Anforderungs-Handler, sammeln alle notwendigen Daten und übergeben ihn als Anfangszustands-JSON-String an ReactDOM.RenderToString()
und erstellen dann benutzerdefiniertes fetch()
, das prüft, ob Anfangsdaten existieren, wenn ja, dann wird HTML sofort rendern.
Einer der Gründe, warum redux so beliebt ist, ist, dass es die Datentrennung erzwingt. Idealerweise haben Sie einen einzigen Ort, an dem Sie alle Datenanwendungen angeben müssen, die gerendert werden sollen. In redux ist das ein Geschäft, aber nehmen wir an, Sie speichern alle Daten in den Requisiten des obersten Elements. Wenn das der Fall ist, alles, was Sie tun müssen, ist, alle relevanten Requisiten zu diesem obersten Element zur Verfügung zu stellen, und es wird alles schön machen. Der Weg, alle benötigten Daten zu sammeln, liegt jedoch beim Server. Ich würde vorschlagen, Hinweise dafür von der aktuellen URL und eingeloggten Benutzerinformationen (sei es ein Token oder ein Cookie) zu bekommen.
Tags und Links reactjs react-router