func appStateReducer(state: AppState, action: Action) -> AppState {
var state = state
state.moviesState = moviesStateReducer(state: state.moviesState, action:
action)
state.peoplesState = peoplesStateReducer(state: state.peoplesState,
action: action)
return state
}
例如会:
store.dispatch(action: MoviesActions.RemoveFromWishlist(movie: movie))
结束同时调用moviesState
和peoplesState
异径管吗?如果是这样,那么为什么不将一个条件放入每个动作仅调用一个reducer的任何原因?
来源:
高级目录源:
默认情况下,是的,所有reducer函数将在每次操作时调用。根据docs,成为性能障碍的可能性很小。通常,只有一个reducer进行状态更新,而所有其他reducer都只通过它们的switch
语句运行,因此时间复杂度随您拥有的actions
的数量而定,这不太可能达到足以接受的数字有效时间(10^7
左右)。
但是,您可以使用redux-ignore
之类的库来使化简器忽略特定的动作,和/或使用reduxr-scoped-reducer
来使化简器仅响应特定的动作。