2017-11-02 12 views
0

私はアクション作成者に以下のコードを書いています:これは私がレデューサー - サブデータ "に見るものです:[{}、{}、{}]} - 実際に約束です - 私はそれを使用して変換しようとしたが、運がない...一日中苦労している...任意のアイデア?ディスパッチ後のレデューサーの空のオブジェクト

export function getMainData() { 
    return async function getMainData(dispatch) { 
    const { data } = await getMainDataAPI(); 
    const subData = data.map((item) => { 
     const endpoint = 'build with item.name'; 
     return Request.get(endpoint); 
    }); 
    console.log('subddd' + subData); prints -> **[object Promise],[object Promise],[object Promise]** 
    dispatch({ 
     type: GET_DATA_AND_SUBDATA, 
     payload: { data, subData } 
    }); 
    }; 
} 

async function getMainDataAPI() { 
    const endpoint = 'url'; 
    return Request.get(endpoint); 
} 
+0

ネストされたアクションの[reducer.state.propsは重複しない可能性があります] react/redux](https://stackoverflow.com/questions/47070786/redu-state-props-is-undefined-in-nested-actions- – ivan

答えて

0

今回は質問がより明確です。

console.logは、次の命令に進む前にAPIの結果を待たずに3つの約束オブジェクトのマップを表示します。

基本的には、data.map((item) => {の代わりにを使用する必要があります。あなたは未解決の約束の配列を派遣しているように見えます

export function getMainData() { 
    return async function getMainData(dispatch) { 
    const { data } = await getMainDataAPI(); 
    const subData = await Promise.all(data.map(async (item) => { 
     const endpoint = 'build with item.name'; 
     return await Request.get(endpoint); 
    })); 
    dispatch({ 
     type: GET_DATA_AND_SUBDATA, 
     payload: { data, subData: subData.data } 
    }); 
    }; 
} 

async function getMainDataAPI() { 
    const endpoint = 'url'; 
    return Request.get(endpoint); 
} 
+0

オブジェクトの代わりに私のレデューサーのペイロードのために[オブジェクトオブジェクト]を取得しています.. – monkeyjs

+0

私はレデューサーのペイロードを文字列化するときデータは表示されません - SubData - 今回も空オブジェクト@yuantonito。 https://stackoverflow.com/users/4247380/yuantonito – monkeyjs

+0

あなたのペイロードがどのように見えるのか、そしてあなたのAPI呼び出しのすべてが返ってくるのでしょうか? 'Promise.all'では3回あなたのAPIを呼び出すので、配列を返すのでオブジェクトを返さないので、配列を返します。オブジェクトを必要とする場合、私たちに期待される出力を提供することは非常に役に立ちます – yuantonito

0

:作業コードの下

。私は彼らが解決するのを待って、返された結果を発送します:

... 
Promise.all(subData).then(results => { 
    dispatch({ 
    type: GET_DATA_AND_SUBDATA, 
    data: { data, subData: results } 
    } 
}); 

幸運!

+0

私はマップを持っています - 私がここでディスパッチすると、3倍(配列のサイズに依存します)をディスパッチします - 既存の設定が可能ですか? – monkeyjs

関連する問題