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
}
  }
);

По идее так. Я просто не обрабатывал конкретно ошибку, а после загрузки пользователя делал дополнительную загрузку его избранных записей.

→ Ссылка