Есть ли способ получить доступ к глобальному состоянию в createSlice? - PullRequest
0 голосов
/ 18 марта 2020

Вот пример:

const user = createSlice({
  name: 'user',
  initialState: { name: '', age: 20 },
  reducers: {
    setUserName: (state, action) => {
      state.name = action.payload // mutate the state all you want with immer
    }
  },
  // "map object API"
  extraReducers: {
    [counter.actions.increment]: (state, action) => {
      state.age += 1
    }
  }
})

Можно ли получить доступ к состоянию счетчика? Допустим, я хочу увеличивать возраст только тогда, когда счетчик равен 30. В противном случае мне нужно было бы прослушать, когда счетчик изменяется в useEffect ловушке, и отправить какое-то действие, которое будет обрабатывать возрастное увеличение (?).

Другими словами, каков наилучший способ вычисления среза состояния на основе текущего глобального состояния с использованием redux-toolkit?

1 Ответ

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

Это рассматривается в записи FAQ Redux о состоянии совместного использования между редукторами .

Вставка ключевых точек:

  • Если требуется редуктор чтобы узнать данные из другого среза состояния, может потребоваться реорганизация формы дерева состояний, чтобы один редуктор обрабатывал больше данных.
  • Возможно, вам придется написать несколько пользовательских функций для обработки некоторых из этих действий. , Это может потребовать замены combineReducers на вашу собственную функцию редуктора верхнего уровня. Вы также можете использовать утилиту, такую ​​как reduce-reducers, для запуска combineReducers для обработки большинства действий, а также запустить более специализированный редуктор для определенных c действий, которые пересекают срезы состояний.
  • Asyn c action Создатели, такие как redux-thunk, имеют доступ ко всему состоянию через getState(). Создатель действия может извлечь дополнительные данные из состояния и поместить их в действие, чтобы каждый редуктор имел достаточно информации для обновления своего собственного среза состояния.
...