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({
|
||||
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: 'Удалено' },
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in a new issue