fix(catalog): после Delete не refetch'аем удалённый товар

Найдено через UI-deep: после Удалить ProductEditPage делал
qc.invalidateQueries({queryKey:['/api/catalog/products']}) до navigate'a.
React Query refetch'ил конкретно ['/api/catalog/products', id] (тот что
живёт на этой же странице) → 404 → axios interceptor показывал toast
«Не найдено» поверх редиректа на список.

Фикс: сначала navigate('/catalog/products'), потом
qc.removeQueries для item-кеша + invalidate список с exact=true чтобы не
матчить вложенный item-key.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
nns 2026-05-30 12:39:39 +05:00
parent eb867697d0
commit 61ca7fee90

View file

@ -184,8 +184,13 @@ export function ProductEditPage() {
const remove = useMutation({
mutationFn: async () => { await api.delete(`/api/catalog/products/${id}`) },
onSuccess: () => {
qc.invalidateQueries({ queryKey: ['/api/catalog/products'] })
// Сначала навигируемся ПРОЧЬ с edit-страницы (иначе оставшийся
// useQuery(['/api/catalog/products', id]) после invalidate refetch'нёт
// удалённый id и Toaster покажет «Не найдено» поверх редиректа). Затем
// выкидываем item-кеш и обновляем список.
navigate('/catalog/products')
qc.removeQueries({ queryKey: ['/api/catalog/products', id] })
qc.invalidateQueries({ queryKey: ['/api/catalog/products'], exact: true })
},
meta: { successMessage: 'Удалено' },
})