2017-11-26 7 views
3

私はreactjsアプリにログオンしたユーザーのデータをグローバルにしたい。 マイアプリのコード:ルータコンポーネントにコンテキストを伝播する方法。 Reactjs

class App extends Component { 
    getChildContext =() => { 
    return { 
     user: { 
     name: 'username', 
     email: '[email protected]' 
     } 
    } 
    } 

    render() { 
    return (
    <Router> 
     <div> 
     <Route exact path='/game' component={Game} /> 
     <Route exact path='/singup' component={Singup} /> 
     </div> 
    </Router> 
); 
} 

App.childContextTypes = { 
user: PropTypes.object 
}; 

ゲームのコンポーネントでは、私が手this.context.userて使用しようとするが、私は未定義を取得します。

コンテキストをルーターコンポーネントに伝播できますか?コンテキストプロバイダにchildContextTypesとgetChildContextを添加することにより

+0

contextTypesを定義したことを確認し、コンテキストは、グローバルに利用可能です。 –

答えて

1

は、自動的に情報をダウン渡し、サブツリー内の任意の成分がcontextTypesを定義してそれにアクセスすることができるが反応します。 contextTypesが定義されていない場合、contextは空のオブジェクトになります。

あなたはコンテキストを伝播する必要はありませんあなたのGameコンポーネント

Game.contextTypes = { 
    user: PropTypes.object 
}; 

https://reactjs.org/docs/context.html

+1

@Nikhil Fadnisありがとうございました。それはいい説明です。問題を修正しました。 –

関連する問題