简体   繁体   English

使用React.js进行服务器端渲染

[英]Server-side rendering with React.js

I cannot manage to render my semantic with Reactjs server side. 我无法通过Reactjs服务器端呈现我的语义。 It works without semantic, thus no problem with my react server side code. 它在没有语义的情况下工作,因此我的反应服务器端代码没有问题。 Server crashes and gives the beginning lines of error: 服务器崩溃并给出错误的开始行:

/Users/isik/Dev/portfolio/reactjs-server-side-rendering/node_modules/semantic-ui-dropdown/index.js:3443
})( require("jquery"), window, document );
                       ^

ReferenceError: window is not defined

I have jquery insatlled with npm. 我的jQuery安装了npm。 And also lastly tried installing jsdom version jsdom@3.1.2. 最后还尝试安装jsdom版本jsdom@3.1.2。 None worked. 没有工作。

I use Recipes-Server-side rendering in semantic-ui webpage. 我在语义UI网页中使用Recipes-Server端渲染

the code I use for my server side component is as follows: 我用于服务器端组件的代码如下:

var React = require('react');
var jquery = require('jquery');
var dropdown = require('semantic-ui-dropdown');

// Can use JSX too
var Component = React.createClass({
    componentDidMount: function () {
        $('.ui.dropdown').dropdown();
    },
    componentDidUpdate: function () {
        $('.ui.dropdown').dropdown('refresh');
    },
    render: function(){
        return(
                <div className="ui selection dropdown">
                    <input type="hidden" name="gender"/>
                    <i className="dropdown icon"></i>
                    <div className="default text">Gender</div>
                    <div className="menu">
                        <div className="item" data-value="1">Male</div>
                        <div className="item" data-value="0">Female</div>
                    </div>
                </div>
        );
    }
});

module.exports.Component = Component;

Is that a general known issue with the server-side rendering with semantic-ui or I am doing it wrong? 这是使用语义UI进行服务器端渲染的普遍已知问题,还是我做错了?

Try this: 尝试这个:

componentDidMount: function () {
    var dropdown = require('semantic-ui-dropdown');
    $('.ui.dropdown').dropdown();
},

I think that calling require('semantic-ui-dropdown') requires to have an existing window initialized in the DOM 我认为调用require('semantic-ui-dropdown')需要在DOM中初始化一个现有window

And remove the actual require('semantic-ui-dropdown') from the top of your file 并从文件顶部删除实际的require('semantic-ui-dropdown')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM