我正在使用rest 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
部分内的reducer中更新状态?
答案 0 :(得分:0)
您不向减速机发送承诺。异步需要2个动作。第一个行动是请求行为。它调用异步操作以及告诉减速器第一个操作。这用于将状态切换为“加载”。
当异步操作完成时,它会调用携带结果的第二个操作。然后,此操作将到达您的reducer,将您的应用从“加载”状态中删除,并使用结果进行更新。
请参阅Redux's Reddit API example并查找fetchPosts
功能。