2017-03-01 97 views
0

我使用休息API一次創建多個記錄。 action.payload包含從服務器返回的每個記錄的id。將id添加到我剛剛在reducer中創建的每條記錄的最佳方法是什麼?添加一個對象數組以在減速器中狀態

這是我到目前爲止。我沒有收到任何錯誤,但這些記錄在創建後並未出現在我的應用中。

const INITIAL_STATE = { all: [] }; 

export default function(state = INITIAL_STATE, action) { 

case POST_TERRITORY_GEOGRAPHY_MASS: 

let territories= action.territories.records; 

action.payload.then(request => { 

    for(var i = 0; i < request.data.results.length; i++) { 
    territories[i].Id = request.data.results[i].id 
    } 

    return { 
    ...state.all, territories 
     ???? 
    } 
}) 
} 

您能夠在減速更新承諾的一部分then內部狀態?

回答

0

您不會向reducer發送承諾。異步需要2個動作。第一個行動是要求的行爲。它調用異步操作,並告訴你的reducer第一個動作。這用於將狀態切換到「加載」。

當異步操作完成時,它會調用第二個操作來執行結果。然後這個動作會到達你的reducer,從「加載」狀態中移除你的應用程序,並用結果更新它。

請參閱Redux's Reddit API example並尋找fetchPosts函數。

+0

如果我錯了,請糾正我的錯誤:在該例中已使用'redux-thunk'中間件http://redux.js.org/docs/advanced/ExampleRedditAPI.html#configurestorejs – Vikram

相關問題