同构反应,无法呈现为字符串,因为我没有有效的反应元素?
Isomorphic React, unable to render as string because I haven't got a valid react Element?
我在使用服务器端渲染设置 React 时遇到了一些严重的问题。
这是我遇到的问题的相关文件:https://bitbucket.org/snippets/imattacus/g9r6
我一直在关注在线教程,我只是在做我看到其他人在做的事情 - 但我的印象是我已经制作了一个反应组件(class?)并且我需要 react.createElement() 在我制作的组件上,以便可以渲染它。
但我不明白该怎么做,因为 createElement 需要在 DOM?
中有一个位置
我只是 React 的新手,所以我可能完全误解了一些东西 - 但是你们能看到我的代码中会产生 'invariant error' unable to use renderToString on invalid ReactElement 的任何问题吗?
谢谢!
我认为这是因为您试图呈现整个 html 页面,其中包含 html 标签,我认为(不是 100%)是有效的。
这是我用于 React 服务器渲染的一些代码片段。 (我正在使用 Koa)
服务器代码
this.body = yield RENDER("index", { TEMPLATE: React.renderToString(<IndexView/>) });
标准html页面
<html>
<head>...</head>
<body>
<div id="app-root">{{ TEMPLATE|safe }}</div>
</body>
</html>
这是客户端 javascript 片段
React.render(<IndexView/>, document.getElementById('app-root'));
简而言之,不要在 JSX 中包含 html / head 标签。有一个 layout.html 或类似的排序并将 React 组件安装在 document.body 或具有给定 id
的元素上
我在使用服务器端渲染设置 React 时遇到了一些严重的问题。 这是我遇到的问题的相关文件:https://bitbucket.org/snippets/imattacus/g9r6
我一直在关注在线教程,我只是在做我看到其他人在做的事情 - 但我的印象是我已经制作了一个反应组件(class?)并且我需要 react.createElement() 在我制作的组件上,以便可以渲染它。
但我不明白该怎么做,因为 createElement 需要在 DOM?
中有一个位置我只是 React 的新手,所以我可能完全误解了一些东西 - 但是你们能看到我的代码中会产生 'invariant error' unable to use renderToString on invalid ReactElement 的任何问题吗?
谢谢!
我认为这是因为您试图呈现整个 html 页面,其中包含 html 标签,我认为(不是 100%)是有效的。
这是我用于 React 服务器渲染的一些代码片段。 (我正在使用 Koa) 服务器代码
this.body = yield RENDER("index", { TEMPLATE: React.renderToString(<IndexView/>) });
标准html页面
<html>
<head>...</head>
<body>
<div id="app-root">{{ TEMPLATE|safe }}</div>
</body>
</html>
这是客户端 javascript 片段
React.render(<IndexView/>, document.getElementById('app-root'));
简而言之,不要在 JSX 中包含 html / head 标签。有一个 layout.html 或类似的排序并将 React 组件安装在 document.body 或具有给定 id
的元素上