2017-04-16 21 views
1

これでローカルのフラスコサーバーにajaxリクエストを送信するログインで少し反応したアプリケーションを作成しました。これは{token:TOKEN, user:{username:USERNAME,email:EMAIL}}を返します。 JSONReact - クラス(例:User.username)にグローバル変数を格納する方法

私のリアクションアプリには複数のページがあるので、ReactRouterを使用していますが、複数のReact.createClass({})インスタンスでUser.usernameなどの変数にアクセスする方法を把握することはできません。私は、このクライアント側のすべてをやっている

念頭に置いてクマ(私は、サーバー側のレンダリングを反応させるために移動するまで)

現在、「私はlocalStorage内の変数のこれらのタイプを格納していますが、これは、彼らがドンことを意味UIの更新、URLの変更、リフレッシュなしで自動的に更新されます。

const Admin = (props) => (
    <div> 
     <h2>Admin</h2> 
     <p>Welcome, {localStorage.username}</p> 
     {props.children} 
    </div> 
) 

しかし、あなたは、あなたがコンポーネント間で共有する必要があり、複数のデータを持っている場合は、私が行うことができるようにしたいと思い

const Admin = (props) => (
    <div> 
     <h2>Admin</h2> 
     <p>Welcome, {User.username}</p> 
     {props.children} 
    </div> 
) 

ルート

ReactDOM.render(
    <Router history={browserHistory}> 
     <Route path="/" component={App}> 

      <Route path="login" component={Login}> 
       <IndexRoute component={LoginForm}/> 
       <Route path="twofactor" component={twoFactor}/> 
       <Route path="backupcode" component={backupCode}/> 
      </Route> 

      <Route path="register" component={Register} onEnter={auth.auth_disallow}/> 

      <Route path="admin" onEnter={auth.required} component={Admin}> 
       <Route path="dashboard" component={Dashboard}> 
        <IndexRoute component={DashboardIndex}/> 
       </Route> 

       <Route path="settings" component={Settings}> 
        <IndexRoute component={SettingsIndex}/> 
        <Route path="changepassword" component={ChangePassword}/> 
        <Route path="editinfo" component={EditInfo}/> 
       </Route> 

       <Route path="/logout" onEnter={auth.logout}/> 
      </Route> 

      <Route path='*' component={NotFound}/> 

     </Route> 
    </Router>, 
    document.getElementById('app') 
); 
+0

1 QUES、上の素敵なチュートリアルですか?ユーザーが一度ログインすると、その情報はセッション内で同じになりますが、正しいのでしょうか? –

+0

はい、彼らは – harryparkdotio

+0

を行う能力を持っているユーザー名を変更しない限り、あなたはredux/fluxや任意の店舗のようなアーキテクチャを使用していますか?他のすべてのコンポーネントをレンダリングする主なルートは何ですか? –

答えて

3

であることは、あなたがのために行く必要があります共通の店舗モデル、すなわちReduxまたはFlux。

したがって、localStorageに格納してデータを共有する代わりに、Reduxストアに格納してそこからアクセスできます。

Hereは、URLの変更にユーザー情報がどのように変化するかそれ

+0

これの例を追加できますか? – harryparkdotio

+1

@Pipskweakこれもチェックしてください:http://redux.js.org/docs/basics/ExampleTodoList.html –

+0

いいスタートアップチュートリアルへのリンクを追加しました。問題が発生した場合は、同じ回答を編集することを知らせてください。 –

関連する問題