2016-10-27 3 views
0

私はFLUXで新しく、FLUXでajaxを処理する方法に問題があります。FLUXでajaxレスポンスを処理する方法

私の状況は以下の通りです:

私は機能するのでその後、私はこのコードを実際にdoesntの仕事commentActions.js

fetchComments: function() { 
    allcomments=commentAPI._fetchComments(); 
    return Dispatcher.dispatch({ 
     actionType: ActionTypes.ALL_COMMENTS, 
     comments: allcomments 
    }); 
    } 

を持つファイルcommentAPI.js

//all js files are compiled from coffescript 

// fetching all comments from server 
    _fetchComments: function() { 
     var promise; 
     promise = $.ajax({ 
     url: "comments/show", 
     type: "GET", 
     dataType: "json" 
     }); 
     return promise.then(function(response) { 
     // here should be any action ? 
     }, function(error) { 
     return console.log(error); 
     }); } 

を持っています_fetchComments calle dでcommentActions.jsリターン全体の約束。

私が何をしたい:を私は、AJAXコールバック関数からの応答を取得し、私のペイロード・オブジェクトに結果を渡し、その後commentActions.jsに)(私の_fetchCommentsでDispatcherによって機能を、それを派遣したいと思い

どうすればよいでしょうか?どうすればajaxコールバック関数の応答にアクセスできますか?

答えて

0

あなたは_fetchComments機能とその約束が解決されたとき、アクションを呼び出すfetchCommentsを派遣すべきです。

反応コードでは、非同期関数(つまり_fetchComments)を呼び出す必要があります。あなたの例では

// fetching all comments from server 
    _fetchComments: function() { 
     var promise; 
     promise = $.ajax({ 
     url: "comments/show", 
     type: "GET", 
     dataType: "json" 
     }); 
     return promise.then(function(response) { 
     // put the sync action here 
     fetchComments(response) 
     }, function(error) { 
     return console.log(error); 
     }); } 

とアクションからそれを削除することを忘れないでください(すなわちfetchComments

+0

私はよく理解していれば。私はアクションのfetchCommentsをコードの一部で呼び出す必要があります。どこが約束されているのですか?私のストアを更新する方法を知っていて、トップレベルのコンポーネントでfetchCommentsメソッドを呼び出せません。 _fetchComments()? – Morty

+0

そういうもの。非同期アクション(_fetchComments)をコンポーネントからディスパッチする必要があります。 [ここでredux非同期アクションを参照](http://redux.js.org/docs/advanced/AsyncActions.html#async-action-creators) – mimsugara

関連する問題