2016-06-21 26 views
0

Reactjsサーバー側で私のセマンティックをレンダリングすることはできません。それはセマンティックなしで動作するので、私の反応サーバーのサイドコードに問題はありません。 サーバーがクラッシュしてエラーの始まる行を与える:React.jsを使用したサーバー側レンダリング

/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 

私はjqueryのNPMでinsatlledています。また、最後にjsdomバージョン[email protected]をインストールしようとしました。何も働かなかった。

私はsemantic-uiウェブページでRecipes-Server-side renderingを使用します。次のように

私は私のサーバー側コンポーネントに使用コードは次のとおりです。

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; 

は、サーバー側での一般的な既知の問題は、セマンティック-UIでレンダリングまたは私はそれが間違ってやっているということですか?

答えて

0

このお試しください:

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

私はrequire('semantic-ui-dropdown')を呼び出すと、DOM

に初期化され、既存のwindowを持っているし、ファイルの先頭から実際のrequire('semantic-ui-dropdown')を削除するために必要であることを考える

+0

その原因になりますがクライアント側との競合?クライアントサイドのコンポーネントには完全なsemantic-uiがあり、クライアント側のコンポーネントはそれを使用し、サーバー側のレンダリングコンポーネントはチェックしたとおりに使用することができます。 –

+0

おそらく。私は言うことができません。それは何を使用するかによって異なります。既存のクライアント側の "semantic-ui"定義を上書きすることができます。 gitubのポストは、なぜそれがうまくいかないのかという答えをもっと与えるでしょう:) –

+0

1234567891011 :) –

関連する問題