Обе ли эти редукторы вызываются при каждой отправке действия? - PullRequest
0 голосов
/ 09 марта 2020
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? Если да, то есть ли какая-то причина, по которой не нужно ставить условие для вызова только одного редуктора за действие?

Источник:

https://github.com/Dimillian/MovieSwiftUI/blob/master/MovieSwift/Shared/flux/reducers/AppReducer.swift

Источник каталога более высокого уровня:

https://github.com/Dimillian/MovieSwiftUI/tree/52e852fc3da2524fd784374727e747eaba8497b6/MovieSwift/Shared/flux

1 Ответ

1 голос
/ 09 марта 2020

По умолчанию да, все функции редуктора будут вызываться при каждом действии. Согласно docs , такое ограничение производительности крайне маловероятно. Как правило, только один редуктор обновляет состояние, а все остальные редукторы просто выполняют свои операторы switch, поэтому сложность времени масштабируется с имеющимся у вас значением actions, что вряд ли достигнет достаточно высоких значений, чтобы принять значительное время (10^7 или около того).

Однако вы можете использовать библиотеки типа redux-ignore, чтобы редукторы игнорировали определенные c действия и / или reduxr-scoped-reducer, чтобы редукторы реагировали только на указанные c действий.

...