我目前的情况: 我有一个消息状态,用于存储应用程序发生的事情 某些操作(实际上几乎所有操作)都被触发并计算最终状态。除此消息外,其他状态可以分为不同的独立部分。但是因为我需要为每个动作更新消息状态,所以我坚持将每个减少功能放入一个巨大的减速器中。有什么我可以做的,以避免一个巨大的减速器,并将不同的减速器功能放到不同的减速器,并使每个减速器控制一个状态的一部分,同时共享一个共同的消息状态?
一些最小化的reducer代码:
const reducer = (state = {}, action) => {
switch (action.type) {
case ActionTypes.MOVE_CHARACTER: {
const message = computeMoveMessage(state.maze, action.payload);
return {
...state,
message,
};
}
case ActionTypes.END_BATTLE: {
const message = computeEndMessage(state.maze, action.payload);
return {
...state,
message,
};
}
case ActionTypes.CHARACTER_ATTACKS: {
const message = computeAttackMessage(state.maze, action.payload);
return {
...state,
message,
};
}
case ActionTypes.SAVE_FILE: {
const message = computeSaveFileMessage(state.file, action.payload);
return {
...state,
message,
};
}
case ActionTypes.LOAD_FILE: {
const message = computeLoadFileMessage(state.file, action.payload);
return {
...state,
message,
};
}
default:
return state;
}
}
如您所见,LOAD_FILE
和SAVE_FILE
减速器大部分独立于其他三个减速器。但是,由于我需要更新state.message
,所有5个减速器都被强制放入一个巨型reducer.js
。是否有任何解决方法,以便我可以将状态分为state.file
和state.maze
,同时两者共享state.message
?