createAction и createReducer Flashcards

1
Q

createAction и createReducer

A

В Redux Toolkit для создания action creator используется функция createAction, позволяющая создать action creator с зафиксированной константой type:

const increment = createAction<number>('counter/increment')
или
export const deleteTodolistAC = createAction<{id: string}>('todolists/deleteTodolist')
или
export const createTodolistAC = createAction('todolists/createTodolist', (title: string) => {
return {payload: {title, id: nanoid()}}
})</number>

Для создания reducer можно использовать функцию createReducer. Эта функция первым параметром принимает инициализационное состояние, а вторым - функцию обратного вызова, аргументом которого является объект builder, предоставляющий функции addCase, addMatcher и addDefaultCase:

const initialState = {
value: 0
}

const counterReducer = createReducer(initialState, (builder) => {
builder
.addCase(increment, (state, action) => {
state.value++
})
})

или
export const todolistsReducer = createReducer (initialState, builder => {
builder
.addCase (deleteTodolistAC, (state, action) => {
const index = state.findIndex (todolist => todolist.id === action.payload.id)
if (index !== -1) {
state.splice (index, 1)
}
})
.addCase (createTodolistAC, (state, action) => {
state.push({…action.payload, filter: ‘all’})
})
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly