2016-07-29 46 views
2

Ich muss Top-Level-HTML-Tags auf der Client-Seite (z. B. <html><head>...</head><body></body></html>) zu rendern. Das Ergebnis wird in einen Iframe eingefügt. Auf dem Server würde ich die renderToStaticMarkup-Funktion von react-dom/server verwenden, aber die Client-only react-dom hat diese Funktion nicht.Funktioniert read-dom/server auf der Client-Seite?

Wird react-dom/server auf dem Client in der neuesten Version von reagieren (derzeit 15.3.0)? Wenn ja, gibt es seitens des Entwicklerteams der Reaktion, dass es in künftigen Versionen weiterhin auf dem Client unterstützt wird?

Antwort

2

tl; dr: ja.

Ich verifiziert, dass es in [email protected] funktioniert. Das Facebook/React-Team hat es tatsächlich als Teil der Reaktion selbst verlassen, aber nur als React.__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED offen gelegt. Wenn Sie möchten, können Sie es so direkt verwenden:

var ReactDOMServer = React.__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; 
console.log(ReactDOMServer.renderToStaticMarkup(<div />)); // => <div></div> 

Natürlich, werden Sie wahrscheinlich, wenn Sie das tun gefeuert ...

Zum Glück, sie haben auch eine clientseitige Version erstellt von read-dom/server (react-dom-server-15.3.0.min.js). Es gibt nicht viel zu diesem Skript. Alles, was es tut, ist React.__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED als ReactDOMServer (mit einem UMD-Wrapper).

Ich kann nur davon ausgehen, dass wenn das reactive Team die Erstellung eines Browser Builds durchführte, es auf der Clientseite weiterarbeiten soll und auch in Zukunft unterstützt wird.