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