Евгений спасибо за ваш вклад в развитие фронтендеров. Курс очень подробный и классный ждал чего-то подобного про react-query или rtk-query именно от вас.
Огромное спасибо за такие видео!!! Было бы вооще сногсшибательно, если бы вы сделали выпуск про комбинацию Zustand и React-query. Прям был бы безумно благодарен вам! Творческих успехов и дальнейших ростов и выпусков таких классных видео! Благодарю!
Очень крутой выпуск, спасибо большое! Искала в нем ответ на свой вопрос но не нашла, может быть подскажете какую то бест практику) как обработать ошибку самого первого упавшего запроса и при этом продолжать делать retry по нему. в рамках 17го реакта) судя по доке либа не зареджектит промис и не вернет ошибку из функции пока идут перезапросы
Евгений, очень благодарен тебе за видео. Но, пожалуйста, будь так добр, выпусти ролик или курс про то КАК ты так работаешь с кодом, я готов не то что всем друзьям скинуть, а заплачу за курс) То как ты работаешь с кодом это нечто, практически не трогая мышку Расскажи пожалуйста про это, про свои хот кеи, про в целом взаимодействие с IDE так, как это делаешь ты Буду очень ждать
Спасибо за туториал, такой вопрос: зачем хранить пользователя в local Storage если его можно хранить в кеше в React Query и просто поставить время cacheTime infinity или -1?
3:49:27 на самом деле выбрасывается не ошибка, а промис (условно под капотом происходит throw promise). Если бы выбросилась ошибка, то ее перехватил бы уже ErrorBoundary
Какой командой ты переименовываешь названия? Не знал что так можно, скопом сразу переименовать во всех местах, так еще и деструктуризацию сам добавит) посмотрел, у меня базово на f2. Ты под себя поменял?
Привет. Вопрос по "перекладыванию данных из одного стейт менеджера в другой" . А как тогда правильно поступать в ситуации: 1) На странице приложения есть форма 2) Значения полей и доступность полей для редактирования приходят с бэкенда. То есть при определенных условиях то одни поля доступны для редактирования, то другие. 3) При редактировании полей, происходят какие-то сайд эффекты (например запросы на бэк для сёрч хелпа) - то есть требуется контролировать изменение полей. 4) Отправка на бэкенд измененной формы происходит по клику на кнопку На первый взгляд кажется, что при получении данных из tanstackQuery требуется переместить их в локальное состояние компонента, ну либо в условный redux. А потом уже отслеживать изменения при редактировании для вызова различных сайд эффектов. А как пользователь нажал на кнопку "сохранить" - уже использовать мутацию, с последующей инвалидацией. Но получается, что такой подход неверен?
Да, по опыту такой подход вызывает много проблем и багов. Я пришёл к подходу когда в tanstack хронятся только дефолтные значения полей. Когда пользователь что то вводит то это записывается в локальное состояние и в поле уже это значение отображается На сабмит мерджим дефолты с введёнными значениями и отправляем на бек Такой подход очень стабильный, и в нём максимум контроля
К сожалению, graphql-request нынче не умеет в загрузку файлов, и в моем случае это значит, что нужно будет городить чистый http рядом с graphql. Так что пока останусь на appolo.
В мутациях часто юзается. При добавлении, удалении тудушки. Ты отправляешь запрос на сервер и не дожидаясь ответа сразу напрямую меняешь в кэше данные. Если запрос на сервер вернул успех, то ничего не делаешь. Ошибка с сервера - нужно откатывать изменение.
Без пагинации 100500 мильон тудушек никак не вывести) Можно сделать оптимистичное обновление и с пагинацией, но это задача чуть более сложная и я решил что это слишком усложнит курс
@@houston_np Получается оптимистично добавили в кэш, пользователь увидел это в UI, кликнул ещё куда-то, с сервера пришла ошибка и мы всё откатили. Пользователь вернулся, а тудушки нет, скрали подумал Штирлиц 😁 Это конечно уже нюансы реализации, но мне кажется между "оптимистичным" и "пессимистичным" обновлением должно быть "реалистичное" обновление ))
@@kokoc58 ты описал очень редкий кейс. в 99% случаях ответ с ошибкой с сервера придет до повторного клика пользователя. и еще в 99% случаев придет успешный ответ вместо ошибки. в принципе даже можно проверить логи на бэке и там где ты уже уверен, что все ок, допиливать на клиенте оптимистичные обновления для улучшения ux
почему же это антипаттерн? Хуки это кусочки компонентов, нигде кроме компонентов их использовать нельзя, не скажу что это был лучший пример, но в общем не вижу причин обобщать, jsx в кастомных хуках бывает нужен, иногда только внутри, иногда и возвращать, например, чтобы захватить контекст, чаще всего это так или иначе связано с модалками.
Евгений спасибо за ваш вклад в развитие фронтендеров. Курс очень подробный и классный ждал чего-то подобного про react-query или rtk-query именно от вас.
Огромное спасибо за такие видео!!! Было бы вооще сногсшибательно, если бы вы сделали выпуск про комбинацию Zustand и React-query. Прям был бы безумно благодарен вам!
Творческих успехов и дальнейших ростов и выпусков таких классных видео! Благодарю!
У него в курсе по FSD вроде была такая связка, можно посмотреть, в целом материал годный
Ну что сказать. Синьор и есть синьор. Все понятно.
Без каши во врту, без запинок, четкое изложение.
Спасибо, пойду готовить к продашену пет проект.
Очень вовремя, только победил все лекции по редаксу и решил пилить проект на этой либе. Спасибо!
Однозначно это очень мощный и объемный курс, которому нет аналогов 👍
Это божественно! Наконец-то смогу в прод затащить этот полезный инструмент
очень крутое начало, добавил в избранные, спасибо за курс, надеюсь не удалите )
Оуоуоу. Я еще редак курс допрохожу, а здесь такое! Кайф.
Спасибо, как раз внедряю react query в проект)
Пушка курс, Жень спасибо!!!
Ура! Спасибо за курс!
Мы ждём курс по next js 😢
Так есть же, курс по реакту где крестики нолики разрабатывали
спасибо большое за работу!!!
thank's a lot
Спасибо за ролик)
Красавчик !!!
Ого, 4 часа? Пушка!
Самое главное обновлять темы, даже если они уже есть на где-то у кого-то
Крутяк, спасибо!
Очень крутой выпуск, спасибо большое! Искала в нем ответ на свой вопрос но не нашла, может быть подскажете какую то бест практику) как обработать ошибку самого первого упавшего запроса и при этом продолжать делать retry по нему. в рамках 17го реакта) судя по доке либа не зареджектит промис и не вернет ошибку из функции пока идут перезапросы
WOOOOOOOOOWWWW!!!
Евгений, очень благодарен тебе за видео. Но, пожалуйста, будь так добр, выпусти ролик или курс про то КАК ты так работаешь с кодом, я готов не то что всем друзьям скинуть, а заплачу за курс)
То как ты работаешь с кодом это нечто, практически не трогая мышку
Расскажи пожалуйста про это, про свои хот кеи, про в целом взаимодействие с IDE так, как это делаешь ты
Буду очень ждать
Great 🎉
респект
Лучший!
Спасибо за туториал, такой вопрос: зачем хранить пользователя в local Storage если его можно хранить в кеше в React Query и просто поставить время cacheTime infinity или -1?
Вовремя) аффтор сечёт когда нужно)
3:49:27 на самом деле выбрасывается не ошибка, а промис (условно под капотом происходит throw promise). Если бы выбросилась ошибка, то ее перехватил бы уже ErrorBoundary
Какой командой ты переименовываешь названия?
Не знал что так можно, скопом сразу переименовать во всех местах, так еще и деструктуризацию сам добавит) посмотрел, у меня базово на f2. Ты под себя поменял?
Привет! спасибо за видео! Можешь пожалуйста скинуть исходники ?
Добавил в описание видео
Подскажи пожалуйста какое у тебя стоит расширение на перевод текста?
Привет. Вопрос по "перекладыванию данных из одного стейт менеджера в другой" . А как тогда правильно поступать в ситуации:
1) На странице приложения есть форма
2) Значения полей и доступность полей для редактирования приходят с бэкенда. То есть при определенных условиях то одни поля доступны для редактирования, то другие.
3) При редактировании полей, происходят какие-то сайд эффекты (например запросы на бэк для сёрч хелпа) - то есть требуется контролировать изменение полей.
4) Отправка на бэкенд измененной формы происходит по клику на кнопку
На первый взгляд кажется, что при получении данных из tanstackQuery требуется переместить их в локальное состояние компонента, ну либо в условный redux. А потом уже отслеживать изменения при редактировании для вызова различных сайд эффектов. А как пользователь нажал на кнопку "сохранить" - уже использовать мутацию, с последующей инвалидацией. Но получается, что такой подход неверен?
Да, по опыту такой подход вызывает много проблем и багов. Я пришёл к подходу когда в tanstack хронятся только дефолтные значения полей. Когда пользователь что то вводит то это записывается в локальное состояние и в поле уже это значение отображается
На сабмит мерджим дефолты с введёнными значениями и отправляем на бек
Такой подход очень стабильный, и в нём максимум контроля
@@paromovevg Интересно.. Надо подумать в эту сторону. Спасибо за ответ!
откуда берётся Preflight запрос при удалении и обновлении todo ?
Удаляет со второго раза или после перезагрузки
Жаль что могу поставить только 1 лайк
большое спасибо за обширный труд! только уши режет то, насколько часто ты говоришь "как говорится"))
а мне глаза режет такую хрень что ты написал.....
@АлександрПлуталов-ъ4ш если ты своими резаными глазами видишь только негатив, то это только твоя проблема)
Контееент💀
К сожалению, graphql-request нынче не умеет в загрузку файлов, и в моем случае это значит, что нужно будет городить чистый http рядом с graphql. Так что пока останусь на appolo.
Мы ждём солид старт
а как вы будите проверять, что прошла ошибка json, а не запроса?)
как можно приобрести твой курс по FSD без вступления в комьюнити ?
Привет! Вот тут можно посмотреть paromovevg.ru/courses/fsd
а если над useSuspenseQuery будет несколько suspense, то показываться будет ближайший в дереве ?
Да, всё верно
@@paromovevg спасибо за ответ, видос бомбовый
👋👍Друг, prettier умеет в onSave
к чему этот коммент твой?
@@ВладиславБирюков-ш5э к видео
Я не увидел у вас на канале курс по react next & redux
И это разочаровало меня
Без пагинации оптимистичное обновление не очень понятно. Если у нас 100500 мильёнов тудушек, как оптимистично обновить не запрашивая все данные?!
В мутациях часто юзается. При добавлении, удалении тудушки. Ты отправляешь запрос на сервер и не дожидаясь ответа сразу напрямую меняешь в кэше данные. Если запрос на сервер вернул успех, то ничего не делаешь. Ошибка с сервера - нужно откатывать изменение.
Без пагинации 100500 мильон тудушек никак не вывести)
Можно сделать оптимистичное обновление и с пагинацией, но это задача чуть более сложная и я решил что это слишком усложнит курс
@@houston_np Получается оптимистично добавили в кэш, пользователь увидел это в UI, кликнул ещё куда-то, с сервера пришла ошибка и мы всё откатили. Пользователь вернулся, а тудушки нет, скрали подумал Штирлиц 😁 Это конечно уже нюансы реализации, но мне кажется между "оптимистичным" и "пессимистичным" обновлением должно быть "реалистичное" обновление ))
@@kokoc58 ты описал очень редкий кейс. в 99% случаях ответ с ошибкой с сервера придет до повторного клика пользователя. и еще в 99% случаев придет успешный ответ вместо ошибки. в принципе даже можно проверить логи на бэке и там где ты уже уверен, что все ок, допиливать на клиенте оптимистичные обновления для улучшения ux
будет ли на рутубе дубль?
Уже есть rutube.ru/video/5f4d4ccd9ac83fe95eac8cce1b4b94b3/
Даже на англотубе лучше не находил материала
Добавь интеграцию tanstack query с zustand!!!!!!!!!!!
она прям 1 в 1 такая же как с redux
React query за 10 минут? Не, банально, а вот за 10 часов...
Это анти паттерн когда useTodoList custom hook возвращает JSX
А в целом курс хорош, в русско-язычном интернете не встречал подобных
почему же это антипаттерн? Хуки это кусочки компонентов, нигде кроме компонентов их использовать нельзя, не скажу что это был лучший пример, но в общем не вижу причин обобщать, jsx в кастомных хуках бывает нужен, иногда только внутри, иногда и возвращать, например, чтобы захватить контекст, чаще всего это так или иначе связано с модалками.