diff --git a/src/food-market.web/src/pages/ProductEditPage.tsx b/src/food-market.web/src/pages/ProductEditPage.tsx index 1406470..84baef7 100644 --- a/src/food-market.web/src/pages/ProductEditPage.tsx +++ b/src/food-market.web/src/pages/ProductEditPage.tsx @@ -184,13 +184,13 @@ export function ProductEditPage() { const remove = useMutation({ mutationFn: async () => { await api.delete(`/api/catalog/products/${id}`) }, onSuccess: () => { - // Сначала навигируемся ПРОЧЬ с edit-страницы (иначе оставшийся - // useQuery(['/api/catalog/products', id]) после invalidate refetch'нёт - // удалённый id и Toaster покажет «Не найдено» поверх редиректа). Затем - // выкидываем item-кеш и обновляем список. + // Просто navigate — компонент размонтируется, useQuery cleanup'нёт + // подписку, мы НЕ дёргаем invalidate/removeQueries: они бы стриггерили + // refetch на уже удалённый id (active subscriber на момент срабатывания) + // и Toaster показал бы «Не найдено» поверх редиректа. + // На /catalog/products fresh fetch list-query сам подгрузит актуальный + // список без удалённой записи. navigate('/catalog/products') - qc.removeQueries({ queryKey: ['/api/catalog/products', id] }) - qc.invalidateQueries({ queryKey: ['/api/catalog/products'], exact: true }) }, meta: { successMessage: 'Удалено' }, })