Reactjs 无效校验和
在尝试使用ReactJS&node进行服务器端渲染时,我一直遇到以下错误Reactjs 无效校验和,reactjs,Reactjs,在尝试使用ReactJS&node进行服务器端渲染时,我一直遇到以下错误 React attempted to use reuse markup in a container but the checksum was invalid. 我看到一个例子,在服务器和客户端上传递相同的道具可以解决这个问题。在我的例子中,我没有任何道具,所以我不确定答案是否适用于我的问题 您可以在我的帐户上查看我的完整示例 我在下面包含了重要的代码。非常感谢您的任何见解 JSX /** @jsx React.DOM
React attempted to use reuse markup in a container but the checksum was invalid.
我看到一个例子,在服务器和客户端上传递相同的道具可以解决这个问题。在我的例子中,我没有任何道具,所以我不确定答案是否适用于我的问题
您可以在我的帐户上查看我的完整示例
我在下面包含了重要的代码。非常感谢您的任何见解
JSX
/** @jsx React.DOM */
var React = require('react');
var index = React.createClass({
render: function() {
return (
<html>
<head>
<script src="bundle.js"></script>
</head>
<body>
<div>
hello
</div>
</body>
</html>
);
}
});
if (typeof window !== "undefined") {
React.renderComponent(<index/>, document.documentElement);
} else {
module.exports = index;
}
改变
React.renderComponent(,document.documentElement);
到
React.renderComponent(,文档);
通知就不见了
有时候,事情很简单。非常感谢。你怎么这么快就知道答案了?我有预感,所以就胡思乱想事后来看,
document.documentElement
是HTML元素,而document
包含它,并且React呈现为元素,因此如果你想呈现HTML
标记,你必须呈现到它的容器中。反应很好。再次感谢你!如果要渲染到div中而不是渲染到
,则类似的答案也适用——您需要创建一个包装器div并渲染到该div中。
require('node-jsx').install();
var express = require('express'),
app = express(),
React = require('react'),
index = require('./index.jsx');
var render = function(req, res){
var component = new index();
var str = React.renderComponentToString(component);
res.set('Content-Type', 'text/html');
res.send(str);
res.end();
}
app.get('/',render);
app.use(express.static(__dirname));
app.listen(8080);
React.renderComponent(<index/>, document.documentElement);
React.renderComponent(<index/>, document);