Рефакторинг редьюсеров Flashcards
Рефакторинг редьюсеров
createAction
В Redux Toolkit для создания action creator используется функция createAction, позволяющая создать action creator с зафиксированной константой type:
const increment = createAction<number>('counter/increment')</number>
export const createTodolistAC = createAction(‘todolists/deleteTodolist’)
export const createTodolistAC = createAction(‘к какой части стейта это будет относиться/наименование типа экшн)
createReducer
Для создания reducer можно использовать функцию createReducer. Эта функция первым параметром принимает инициализационное состояние, а вторым - функцию обратного вызова, аргументом которого является объект builder, предоставляющий функции addCase, addMatcher и addDefaultCase:
const initialState = {
value: 0
}
const counterReducer = createReducer(initialState, (builder) => {
builder
.addCase(increment, (state, action) => {
state.value++
})
})
Immer
Для изменения state рекомендуется использовать мутабельные способы изменения (splice, push, pop, unshift и др.):
Написание редьюсеров с Immer:
https://redux-toolkit.js.org/usage/immer-reducers
https://immerjs.github.io/immer/update-patterns/