Дима, привет!


>> 1. Как в случае удчного добавления поста правильно учести посетителя в перечень постов или чего-нибудь ему написать?
2. Я так погнял, зто здесь тесты проходят, но не понял как. Можешь объяснить, что происходит в коде?

Это тебе надо получше освоить промисы (Promise). У тебя есть обработчик на успешное выполнение запроса. Убедись в ответе, что объект был получен (то есть создан). Далее уже решай что с этим делать. Для примера смотри создание технологий на текущем сайте. https://github.com/freecode-academy/freecode.academy/blob/83c82a066d10320733481fac06accc961c0b00d5/src/pages/Technologies/Create/index.tsx#L77-L87

mutation[0]({ variables: { data, }, }) .then(async (r) => { if (r.data?.createTechnology) { try { await mutation[1].client.resetStore() } catch (error) { console.error(error) } router.push(`/technologies/${r.data.createTechnology.id}`) } }) .catch((error) => { alert(error.message) })
Здесь в блоке then проверяю полученную технологию if (r.data?.createTechnology) и если все ОК, то
1. Сбрасываю кеш аполло-клиента (API-клиента) (одновременно со сбросом кеша выполняется перезапрос всех активных GraphQL-запросов на странице).
2. Выполняю переход на страницу технологии.


const router = useRouter() /** * При успешном выполнении перекидываем на созданную страницу */ const onSave = useCallback( (data: CreateTopicProcessorMutation) => { const uri = data.response.data?.uri if (uri) { router.push(uri) } }, [router] ) const [mutate] = useCreateTopicProcessorMutation({ onCompleted: onSave, })

Здесь примерно все тоже самое делается (только что кеш забыл сбросить), но обработчик на сохранение передан параметром в сам хук мутации (параметр onCompleted). Смысл тот же, но структура кода так вроде как понятней.