2016-06-22 5 views
0

私は自分のアプリケーションにReact + Fluxを使用しています。一般的な流れJSXコンポーネントからアクションメソッドを呼び出すと、そのアクションメソッドは状態を更新し、変更イベントを発行するストアを呼び出し、状態はJSXコンポーネントで更新されます。コンポーネントでは、他のアクションを呼び出すためにアクション結果を待つ方法はありますか?

問題は、自分の仕事(2つのアクションファイルと2つのストアファイル)に基づいて、アクションとストアを別々のファイルに分けたことです。

JSXコンポーネントでこの種のコードを記述できますか? (action2.method2()コールがactions1.method1()の結果を待っています)。そうでない場合は、どうすれば改善できますか? method1()とmethod2()は2つの異なるアクションメソッドであるため、actions1.method1()の本体内でactions2.method2()を呼び出すことはできません。また、method2はmethod1()によって更新された状態にアクセスする必要があります。

答えて

0

できるだけシンプルな操作を行い、すべてのビジネスロジックを店舗に移動することをおすすめします。したがって、store1のデータがstore2の場合は、store2に依存関係としてstore1を挿入し、store2action1によって生成された特定のイベントを聴いてください。あなたは間違いなく、あなたのコンポーネントにこのロジックを実装しないでください。

例えば、この方法store2.jsはなっているはずです

import store1 from './store1'; 

store2.dispatchToken = AppDispathcer.register((payload) => { 
    var action = payload.action; 

    switch(action) { 
     case 'ACTION_1': 
     AppDispathcer.waitFor([store1.dispatchToken]); 
     let data = store1.getDataFromAction1(); 
     // ... here you can update store2 data 
     // ... and call store2.emitChange(); 
     break; 
    } 

}); 
関連する問題