gpt4 book ai didi

node.js - React - 服务器端组件渲染

转载 作者:太空宇宙 更新时间:2023-11-03 22:33:26 24 4
gpt4 key购买 nike

我正在尝试在服务器上 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 (Title),我会得到

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");

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

最佳答案

所以我犯了一些错误。解决方案如下:

a) 在需要组件时使用 babel/register 意味着可以即时完成转译,没有任何麻烦;)

b) dom 是通过 Babel 的 @jsx dom 语法插入的。现在使用 babel/register 就不需要了。

c) 不建议使用 createFactory 导出组件,因为该组件的其他用户可能希望对其调用 createElement。

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

关于node.js - React - 服务器端组件渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33319885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com