[英]add an array of objects to state in a reducer
我正在使用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
????
}
})
}
您能否在promise的then
部分内更新reducer中的状态?
您不会向减速器发送承诺。 异步将需要2个动作。 第一个动作是请求动作。 它调用异步操作,并告诉减速器第一个操作。 这用于将状态切换为“正在加载”。
该异步操作完成后,它将调用第二个操作并携带结果。 然后,此操作将到达您的reducer,将您的应用程序从“加载”状态中删除,并用结果进行更新。
请参阅Redux的Reddit API示例,并查找fetchPosts
函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.