2016-03-27 6 views
1

Es gibt einen neuen Release-Kandidaten von React, v 15.0.0. Da die Methode renderToString jetzt in der Bibliothek veraltet ist und in zukünftigen Versionen offenbar nicht mehr verwendet wird, wie unterstützt man das serverseitige Rendern mit React in der neuen Version?Reagieren v15.0.0: Da diese renderToString veraltet ist, wie serverseitigen Rendering gehen?

Auf der Dokumentseite wurde kein Ersatz für renderToString oder eine andere Erklärung angegeben, außer dass diese bestimmte Methode nicht mehr unterstützt wird.

Danke

+3

'renderToString' bereits in 0,14 veraltet war, gab aber nur eine Warnung aus. Diese Funktionalität existiert jetzt nur noch in ReactDOMServer: https://facebook.github.io/react/docs/top-level-api.html#reactdomserver – dannyjolie

+2

Also funktioniert ReactDOMServer immer noch. Ich war verwirrt und dachte, dass sie damit ganz aufhörten. – user3104270

+1

Ja, sie trennen nur die Dinge voneinander. Das Ziel ist, dass der React-Kern universell und unabhängig von dem ist, was wir als Entwickler rendern wollen, sei es DOM, Markup-Strings oder iOS-Elemente oder was auch immer. Es macht also Sinn, das Zeug in anderen Paketen zu bündeln. – dannyjolie

Antwort

1

Wie in den Kommentaren beschrieben, die richtige (und einzige) Weg in einen String mit neueren Versionen von Reagieren zu machen ist ReactDOMServer des renderToString zu verwenden. Viele der vorhandenen Antworten und Dokumentationen beziehen sich jedoch auf die entfernten React.renderToString. Es ist seit einiger Zeit veraltet, wurde aber anscheinend erst kürzlich entfernt.

A quick and dirty Beispiel, wie dies aussehen könnte (Laufen mit Knoten-babel):

const Express = require('express') 
const React = require('react') 
const ReactDomServer = require('react-dom/server') 

const Label = React.createClass({ 
    render: function() { 
    return <p> Foo! </p> 
    } 
}) 

const server = Express() 

server.use(function(req, res) { 
    const appHtml = ReactDomServer.renderToString(<Label />) 
    res.send(appHtml) 
}) 

server.listen(3000)