Ответ
Да, можно сбрасывать кэш при разлогировании в 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, если нужен более точечный сброс.