reactjs - 为什么 ReactDOMServer.renderToString 不返回原始 HTML
问题描述
我写了一个简单的例子来测试ReactDOMServer.renderToString
这样的:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16.4.1/umd/react-dom-server.browser.development.js"></script>
</head>
<body>
<div id="app"></div>
<script type="text/javascript">
const e = React.createElement;
class DivComponent extends React.Component {
constructor(props) {
super(props);
}
render() {
return e(
'div',
{
className: 'div-component'
},
'This is a div'
);
}
}
document.getElementById('app').innerHTML = ReactDOMServer.renderToString(e('DivComponent'));
</script>
</body>
</html>
我期待它呈现:
<div id="app">
<div class="div-component">This is a div</div>
</div>
但我实际得到的是:
<div id="app">
<divcomponent data-reactroot=""></divcomponent>
</div>
我对 有什么误解ReactDOMServer.renderToString
吗?我怎样才能得到我所期望的原始 HTML?
解决方案
您应该传递组件本身,而不是它的名称,它只是一个没有意义的字符串。
当你想要渲染 HTML 元素时传递一个字符串,如 React 文档中所述。
ReactDOMServer.renderToString(React.createElement(DivComponent));
推荐阅读
- asp.net - 为什么 Visual Studio 测试任务无法在 Azure DevOps 中创建代码覆盖率?
- fullcalendar - Fullcalendar 防止 eventDidMount 在拖动时持续触发
- python - Selenium webdriver 阻止了 Cloudflare。Python
- go - Golang Switch i.(type) 返回与 reflect.TypeOf() 不同的类型
- python - 如何使用 PySide6 为 Qt Linguist 创建 .ts 文件?
- python - 删除字符串中从 ']' 字符开始的字符
- laravel - 如何在 routeIs 函数内的 laravel 刀片中包含变量
- .net - .Net Core 3.1 _Layout.cshtml 中的托管环境错误:CS0841:在声明之前无法使用局部变量“hostingEnv”
- arrays - 如何对 python 列表中的每一对数字求和?
- amazon-web-services - AWS EMR 上的 spark-submit 引发异常