为减速器提供动作有效负载中的功能

时间:2016-08-18 13:04:11

标签: redux

我有一个抽象的架构,只需一个动作即可处理所有API调用。我想通过在有效负载中声明merge函数来自定义它 例如,这是服务器响应返回应该合并到现有对象列表中的特定对象的情况:

{
  type: 'RECEIVE_API_CALL',
  payload: {
    data: { id: 1, name: 'Altair' },
    merge: (state, newItem) => {
      const index = state.findIndex(item => item.get('id') === newItem.id);
      return state.set(index, newItem);
    }
  }
}

reducer将使用merge函数构建新状态:

case 'RECEIVE_API_CALL':
  if (action.payload.merge) {
    return action.payload.merge(state, action.payload.data);
  } else {
    return action.payload.data;
  }

之前我没有看到有效负载内的功能。这种方法有什么缺点吗?

0 个答案:

没有答案