Redux-toolkit, как обновить slice внутри другого slice
Имеется хранилище с вызовом модального окна с информацией об ошибки. Туда нужно передать информацию (title, true (открыть окно) и сообщение об ошибки). В другом slice, при получении клиентов через createAsyncThunk и использовании extraReducers, я обрабатываю ошибку, которая пришла с сервера.
builder.addCase(getClientsList.rejected, (state, action) => {
const modal: any = {
title: "Ошибка",
children: <Error error={action.error.message} />,
open: true
};
Modal(modal);
});
В моем случае функция modal используется для dispatch и вызова метода изменения состояния слайса модального окна. Пытался прямиком в AddCase запихать диспатч - появляется ошибка, что диспатч должен быть внутри компонента. Хорошо, сделаю компонен Model, но и тут возникает ошибка: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons
Так же пробовал сделать это таком образом: modalActions.openModalError(modal) Но так же безуспешно. Как правильно обновлять slice внутри другого slice ? Я особо в фронте не шарю, больше по бэку. Спасибо!
Ответы (1 шт):
Внутри своей функции, созданной через createAsyncThunk (в данном случае getClientsList) ты можешь получить доступ к dispatch:
const getClientsList = createAsyncThunk(
"clients/getClientsList ",
async (_, thunkApi) => {
const { dispatch } = thunkApi;
try {
const { data } = await fetch("clients");
return data;
} catch (error) {
dispatch(modal(error))
return null
}
}
);
По идее так. Я просто не обрабатывал конкретно ошибку, а после загрузки пользователя делал дополнительную загрузку его избранных записей.