在reducer中添加一个对象数组

时间:2017-03-01 00:35:42

标签: javascript redux react-redux

我正在使用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中更新状态?

1 个答案:

答案 0 :(得分:0)

您不向减速机发送承诺。异步需要2个动作。第一个行动是请求行为。它调用异步操作以及告诉减速器第一个操作。这用于将状态切换为“加载”。

当异步操作完成时,它会调用携带结果的第二个操作。然后,此操作将到达您的reducer,将您的应用从“加载”状态中删除,并使用结果进行更新。

请参阅Redux's Reddit API example并查找fetchPosts功能。