2017-01-01 6 views
3

私はExpressとReactを使ってゲームを構築しています。ユーザのスコアを増やすなど、私のコントローラ上でアクションを実行するには、index.jsxファイルのuserIdにアクセスする必要があります。pugからJSXへのパラメータを渡す

私のルートはuser_idのparamを通過する間index.pugファイルをレンダリング:

//server.js 
app.get('/', function (req, res) { 
    const userId = req.query.userId 
    res.render('index', {userId: userId}) 
}) 

それから私はこのように、私のパグファイルにuserIdにアクセスすることができます。

// index.pug 
body 
    div#errors 
    #root 
    p #{userId} // prints the User Id 

今、私はこれにアクセスする必要がありますuserId param in index.jsxファイルには、Reactコンポーネントが含まれています。

class Cell extends React.Component { 
    render() { 
     return (
     <button onClick={() => this.props.onClick()}> 
      {userId} 
     </button> 
    ) 
    } 
    }  

しかし、これは期待通りに機能しません。何か案は?

答えて

0

あなたはwindowオブジェクトを使用して行うことができます

はのは

script. 
    var userId = '#{userId}'; //assigning pug value to window object. 

は今、あなたは、私が使用してこの同じようにやったwindow.userId

class Cell extends React.Component { 
    render() { 
     return (
     <button onClick={() => this.props.onClick()}> 
      {window.userId} 
     </button> 
    ) 
    } 
    } 
+0

としてreactコンポーネントでuserIdにアクセスすることができ、あなたの.pugファイルにしましょう'window'オブジェクトは' pug'データを 'react'コンポーネントに渡します –

+0

ありがとう!それは確かに方法です。ここに私が実装した方法があります: '' 'index.pug スクリプト。 window.fbId =!{JSON.stringify(userId)}; '' ' その後index.jsx中: ' '' ReactDOM.render( <ゲームのuserId = {userIdを} />、 のdocument.getElementById( 'ルート') )は '' ' –

+0

ああ、あなたは'に合格レンダリング機能を提供する。それはまた大丈夫です。 –

関連する問題