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())
- 如何避免在ReactJS同构应用程序服务器上出现错误'localStorage未定义'?
- 在同构重做应用程序中设置cookie的位置?
- Webpack和Nodejs同构需要绝对path
- 使用Catberry Framework构build独特组件ID的最佳实践是什么?
- 同构反应与Webpack的resolve.root选项
- 使用webpack,我可以将Node.js和浏览器代码放在同一个文件中,但阻止Node.js代码将其传送到浏览器?
- Webpack-dev-server和isomorphic react-node应用程序
- 如何使用Catberry框架通过URIpath段设置应用程序语言?
- 无法使用derbyjs在视图中显示文档列表