我有一个抽象的架构,只需一个动作即可处理所有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;
}
之前我没有看到有效负载内的功能。这种方法有什么缺点吗?