我正在编写一个带有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依赖还是还有其他原因可能发生?
答案 0 :(得分:1)
<InfoBoxes />
实际上已经转化为:
React.createElement(InfoBoxes)
createFactory
看起来(大致)是这样的:
function createFactory(type) {
return React.createElement.bind(null, type);
}
所以他们最终是等同的;如果你正在使用jsx,你不需要使用工厂。