我正在尝试在 React 中使用同构渲染,以便我可以输出静态 HTML 作为我的应用程序的文档。
问题是我有一个仅在客户端上运行的特定组件,因为它引用window
. 解决方案很明显:不要在服务器上呈现它。是的,我不能在服务器上渲染它,但是,我仍然需要将它包含在我的webpack
包中,以便我可以在客户端上渲染它。问题是,阻止我的组件在服务器上呈现的代码是:
function isServer() {
return ! (typeof window != 'undefined' && window.document);
}
但是,isServer()
也true
当webpack
被捆绑了,我希望它正常工作,同时webpack
运行。
那么,我如何检测它webpack
正在运行?
我正在寻找这样的东西:
function isWebpack() {
// what do I put here?
}
现在,如果isServer()
和 ,我可以正常呈现我的客户端组件!isWebpack()
。
谢谢!
编辑
这是我正在尝试构建的组件:
function isServer() {
return ! (typeof window != 'undefined' && window.document);
}
import React from 'react';
const LED = React.createClass({
render: function () {
if(!isServer()) {
var LiveSchemaEditor = require('../../src/components/LiveSchemaEditor.js');
return <LiveSchemaEditor />;
}
return <div>I AM IN THE SERVER</div>;
}
});
export default LED;
困扰我的是webpack
捆绑包包含 的内容,LiveSchemaEditor.js
但它仍然I AM IN THE SERVER
在客户端上打印。这没有意义。