反应es6服务器端渲染不需要工厂吗?

时间:2016-04-20 14:03:03

标签: javascript reactjs ecmascript-6

我正在编写一个带有react的应用程序并执行服务器端呈现我执行了以下操作:

var Component = require('myComponent');
var ComponentFactory = React.createFactory(Component);

/* GET home page. */
router.get('/', function (req, res, next) {
    res.render('index', {
        react: ReactDom.renderToString(ComponentFactory()),
    });
});

现在我正在重写应用程序,但将大部分javascript切换到ES6,但是当我尝试使用该组件创建工厂时,它不会显示在浏览器中,而是我必须执行以下操作:

var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
    res.render('index', { 
        reacthtml: ReactDom.renderToString(<InfoBoxes />)***here***
    });
});

我不得不在jsx语法中输入组件。这是ES6依赖还是还有其他原因可能发生?

1 个答案:

答案 0 :(得分:1)

像这样的JSX:

<InfoBoxes />

实际上已经转化为:

React.createElement(InfoBoxes)

createFactory看起来(大致)是这样的:

function createFactory(type) {
    return React.createElement.bind(null, type);
}

所以他们最终是等同的;如果你正在使用jsx,你不需要使用工厂。