Можно ли сбрасывать кэш при разлогировании в Redux Toolkit Query

«Можно ли сбрасывать кэш при разлогировании в Redux Toolkit Query» — вопрос из категории Библиотеки, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно сбрасывать кэш при разлогировании в RTK Query. Для этого используй метод resetApiState из API-среза.

Пример:

// store.ts
import { api } from './api';

const rootReducer = combineReducers({
  [api.reducerPath]: api.reducer,
  // другие редюсеры
});

const store = configureStore({
  reducer: rootReducer,
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware().concat(api.middleware),
});

// authSlice.ts
const authSlice = createSlice({
  name: 'auth',
  initialState: { user: null },
  reducers: {
    logout: (state) => {
      state.user = null;
      store.dispatch(api.util.resetApiState()); // сброс кэша
    },
  },
});

Это очистит все кэшированные данные и аннулирует подписки. Также можно использовать invalidateTags, если нужен более точечный сброс.