React – 服务器端组件呈现

我试图renderToString一个非常简单的React组件在服务器上:

/** @jsx dom */ var React = require("react"); var Title = React.createClass({ render: function(){ return(<h1>Hello World</h1>) } }); module.exports = React.createFactory(Title); 

当我调用ReactDOMServer.renderToString(组件)时,我得到Error: Invariant Violation: renderToString(): You must pass a valid ReactElement.

如果我做React.createElement(标题),我得到

 return(dom.h1(null, "Hello World")) ^ ReferenceError: dom is not defined 

路线文件:

 var express = require('express'), router = express.Router(), React = require("react") ReactDOMServer = require("react-dom/server"); JSX = require('node-jsx').install({ extension: '.jsx' }), AssessmentComponent = require("../react/components/title.react.jsx"); 

我不知道为什么这不起作用!

所以我犯了一些错误。 解决scheme如下

a)当需要组件时使用babel / register,意味着可以在没有任何faff的情况下在飞行中完成传输;)

b)dom被Babel的@jsx dom语法插入。 现在没有必要使用babel / register。

c)不build议使用createFactory导出组件,因为组件的其他用户可能需要调用createElement。

d)我在路由文件中调用了createFactory,但它似乎返回了一个需要调用的函数。 – ReactDOMServer.renderToString(Component())