Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 未调用React中的服务器端呈现_Html_Reactjs_Server Side Rendering_Isomorphic - Fatal编程技术网

Html 未调用React中的服务器端呈现

Html 未调用React中的服务器端呈现,html,reactjs,server-side-rendering,isomorphic,Html,Reactjs,Server Side Rendering,Isomorphic,很明显,我遗漏了一些东西。我有一个简单的React类,我想使用服务器端渲染将其转换为React类,但我无法获得要在服务器上渲染的初始组件 我已将我的初始应用程序类更改为使用renderToString const App = ()=> { var html = ReactDOMServer.renderToString(<div> <div className="jumbotron text-center">

很明显,我遗漏了一些东西。我有一个简单的React类,我想使用服务器端渲染将其转换为React类,但我无法获得要在服务器上渲染的初始组件

我已将我的初始应用程序类更改为使用renderToString

const App = ()=> {    
  var html = ReactDOMServer.renderToString(<div>
         <div className="jumbotron text-center">
           <h1>Welcome!</h1>
         </div>
         <div className="container">
           <MyComponent />
         </div>
       </div>);
   return html;
}

export default App;
const-App=()=>{
var html=ReactDOMServer.renderToString(
欢迎
);
返回html;
}
导出默认应用程序;
我已更新index.js文件以使用水合物:

ReactDOM.hydrate(<App />, document.getElementById('root'));
ReactDOM.hydrate(,document.getElementById('root');
但是,我不会在浏览器中渲染MyComponent。我得到的是浏览器页面中显示的MyComponent的HTML。如果在浏览器中查看页面源代码,我可以看到组件的HTML没有随页面一起下载(Hydrome中使用的根元素为空)。当我使用开发人员的“工具”“元素”选项卡时,我可以看到我的组件的所有HTML都已插入到带引号的字符串中的根元素中(这就是它显示在浏览器页面中的原因)

我假设发生的情况是,我的组件没有在服务器上呈现,但仍在从浏览器调用。结果是,我的renderToString将一个字符串返回给我的所有组件HTML的客户端,该HTML尽职尽责地插入到我的根元素中


我错过了什么?我使用npx create react应用程序创建了应用程序,我使用的是16.8.0版。

您有这样的服务器设置吗?也发布你的服务器代码版本吗?不确定你所说的服务器代码是什么意思?例如,您是否正在查找特定的配置文件?如果有帮助的话:这是一个在Visual Studio代码中运行的应用程序,使用npx包附带的开发服务器。您需要创建一个服务器来进行服务器端渲染。看看这个->。你需要有一个服务器监听请求,请求被调用时抛出会做出反应。这听起来像是我缺少的东西。您的意思是,使用npx设置的开发服务器在默认情况下不是这样设置的,并且/或者需要额外的代码才能与该服务器集成。您需要创建自己的服务器,或者可以在React中使用
Nextjs
进行服务器端渲染。