ありがとう、正しい(そして唯一の)方法が反応の最近のバージョンを文字列にレンダリングするためには、ReactDOMServerのrenderToString
を使用することです。ただし、多くの既存の回答とドキュメントは削除されたReact.renderToString
を参照しています。それはしばらくの間廃止されましたが、明らかに最近削除されただけです。
これは、(ノード・バベルで実行されている)ように見えるかもしれないものの迅速かつ汚い例:
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)
'renderToString'はすでに0.14では非推奨となったが、警告のみを与えました。この機能は、ReactDOMServerにのみ存在するようになりました。https://facebook.github.io/react/docs/top-level-api.html#reactdomserver – dannyjolie
したがって、ReactDOMServerは引き続き動作します。私は混乱していて、彼らはそれを完全に取り去っていると思った。 – user3104270
ええ、彼らはお互いを分離しているだけです。目標はReactコアが普遍的なものであることです。私たちが開発者として望むもの、つまりDOM、マークアップ文字列、iOS要素など何にでも依存します。そのようなものを他のパッケージにバンドルするのは理にかなっています。 – dannyjolie