extraReducers Flashcards

(1 cards)

1
Q

extraReducers

A

При создании тудулиста добавляется тудулист в массив в todolistsSlice, но еще нужно добавлять пустой массив тасок для созданного тудулиста. Т.е. нужно в tasksSlice обработать case, созданный в todolistsSlice. Сделать это в reducers нельзя, потому что в todolistsSlice имя экшена будет todolists/addTodolist, а в tasksSlice - tasks/addTodolist.

Для решения проблемы используйте свойство slice extraReducers, которое используется для обработки actions из внешних слайсов или асинхронных операций createAsyncThunk. extraReducers используется с ‘builder callback’ notation, как и createReducer.

Ссылка: https://redux-toolkit.js.org/api/createslice#extrareducers

Скопируйте кейсы createTodolistAC и deleteTodolistAC в extraReducers слайса тасок:
export const tasksSlice = createSlice({
//
extraReducers: builder => {
builder
.addCase(createTodolistAC, (state, action) => {
state[action.payload.id] = []
})
.addCase(deleteTodolistAC, (state, action) => {
delete state[action.payload.id]
})
},
//
})

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