Ben bileşenlerini tepki verileri geçmek mümkün fasulye ettik:gibi sunucu tarafında onları işlenmiş zaman verilerle bileşenlerini görüntülemeyi nasıl
app.get('/', function (req, res, next) {
var reactHtml = ReactDOMServer.renderToString(component({data}));
res.render('index.jade', {reactOutput: reactHtml});
});
Şimdi ettik değişimi t bu için
server.js:
app.get('*', (req, res) => {
// match the routes to the url
match({ routes: routes, location: req.url }, (err, redirect, props) => {
props.data = {q:123};
const appHtml = ReactDOMServer.renderToString(routerContext(props));
res.render('index.jade', {reactOutput: appHtml});
})
});
yönlendirici bağlam
module.exports = React.createClass({
render: function(){return(<RouterContext {...this.props} />)}
});
ve güzergahları
module.exports = (
<Route path="/" component={App} {...this.props}>
<IndexRoute component={List}/>
<Route path="/about" component={About}/>
</Route>
);
App.jsx
var App = React.createClass({
render: function() {
console.log(this.props);
return (
<div id="app-root" className="container">
<Nav/>
<h1>{this.props.q}</h1>
{this.props.children}
<div className="Row">
<div className="footer col-lg-12"></div>
</div>
</div>
)
}
});
Yani örneğin benim App bileşeninde bu noktada props.data = {q:123};
veri olsun istiyorum ama App bileşeninde console.log(this.data);
yaptığınızda yöntemi işlemek ben Tarih, yer ve vb. var, ama verilerim değil. {q:123}
verilerini server.js mantığından (Uygulama veya Liste veya Hakkında) provaya geçirmek için herhangi bir yol var mı?
Sen serileştirip initialState
olarak kök bileşene bu adımı geçerseniz, örneğin hale sunucuda sayfaya eklemeniz gerekir
Çok teşekkürler. Bir demo kontrol ettim. Tam olarak ihtiyacım olan şeyi yapıyor gibi görünüyor. Kaynakları okumak için birkaç saatim var. Aslında tepki-yol kaynağı okudum ve çatala yolunu buldum ve bu içeriğe additinonal veri aktarımı yapmak için RouterContext'teki 'getChildContext' işlevini değiştirdim. Ama senin yolun daha rahat görünüyor – xander27
evet, daha fazla bir 'kesmek' düşünün. Dinamik içerik için redux mağazaları gibi bir şey kullanmak gerçekten çok daha kolay. Ve ilk sunucuyu oluşturmak istiyorsanız, sözleri çözen [bu] (https://github.com/choonkending/react-webpack-node/blob/master/app/api/fetchComponentDataBeforeRender.js) gibi bir şey ekleyebilirsiniz. render vermeden önce özel verileriniz için, hala tüm SEO profesyonellerini elde edersiniz – PijusV