2017-05-17 10 views
0

SOFでの私の最初の質問はちょっとばかげているようですが、Web開発の初心者で、初めてのJavaScriptアプリケーションを作成することを考えてみましょう:)。私は、ディスパッチするときに変数の値にアクセスしようとしています。値はFirebaseデータベースから取得したキーで、「ディスパッチ」メソッドの「子」選択にその値を渡したいと思います。これは私が関数のさまざまなレベルの変数へのアクセス

export function addUser(name, username, image) { 
 
    var lastIndex; 
 
    usersRef.limitToLast(1).once("child_added", function(snapshot) { 
 
    lastIndex = snapshot.key; 
 
    }); 
 
    return dispatch => usersRef.child(lastIndex).set({"name": name, "username": username, "image": image}); 
 
}

lastIndexのは、私が派遣にアクセスしようとしています変数ですが、それはあなたがで、イベントリスナーにlastIndexのを設定している未定義

答えて

1

を返すやったことあります現時点でのディスパッチが呼び出されたが、イベントはまだ開始されていない。非同期呼び出しを処理する理由は、Redux-thunkが関数を返すアクションにディスパッチを渡す理由です。よりよいアプローチは、

export function addUser(name, username, image) { 
    return dispatch => 
    usersRef.limitToLast(1).once("child_added", function(snapshot) { 
     const lastIndex = snapshot.key; 
     // call you dispatch here 
    }); 
} 

です。しかし、このような機能はミドルウェアで優れています。

関連する問題