繁体   English   中英

React服务器端渲染错误页面

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM