[英]React server side rendering wrong page
在我的app.js
我分为两个部分...
app.use('/', index);
app.use('/register', reg);
索引部分和寄存器部分。
在我的index.js
我正在呈现以下内容...
var React = require('react');
var reactDom = require('react-dom/server');
var RegApp = React.createFactory(require('../components/index'));
router.get('/', function(req,res) {
var reactHtml = reactDom.renderToString(RegApp({exists: false}));
res.render('../../tutorHub/views/index.jade', {reactOutput: reactHtml});
});
这正在调用要渲染的以下react组件...
class RegApp extends React.Component {
constructor(props) {
super(props);
}
render(){
return (
<Register />
);
}
}
module.exports = RegApp;
因此,用户看到的第一页是<Register />
组件。 现在,在我的另一条路线中,我正在查询register.js
并根据结果渲染页面。
简而言之,我正在尝试渲染另一个组件来替换我上面渲染的组件...
var React = require('react');
var reactDom = require('react-dom/server');
var App = React.createFactory(require('../components/index'));
router.post('/', function (req, res) {
//Here I query the db
...
console.log("query success");
var reactHtml = reactDom.renderToString(App({exists: true}));
res.render('../../tutorHub/views/index.jade', {reactOutput: reactHtml});
尝试呈现的组件如下...
class App extends React.Component {
constructor(props) {
super(props);
}
render(){
return (
<Index />
);
}
}
module.exports = App;
问题是,此组件永远不会被渲染。 该页面刷新并呈现第一个组件<Register />
而不是<Index />
。 这一切都非常令人困惑,因为控制台会打印query success
,但是仍然无法呈现页面。 即使将console.log
放入App
组件的render方法中,它也会被打印出来,但是页面不会被渲染。 我怎样才能解决这个问题?
您似乎正在传递路径的Register组件:/
router.get('/', function(req,res) {
var reactHtml = reactDom.renderToString(RegApp({exists: false}));
res.render('../../tutorHub/views/index.jade', {reactOutput: reactHtml});
});
在上面的路径应该是/ register,或者该组件应该是App组件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.