Тестируем React 19 BETA (use, useActionState, useOptimistic, useFormStatus, context)

  Рет қаралды 16,646

АйТи Синяк

АйТи Синяк

Күн бұрын

Пікірлер: 99
@it-sin9k
@it-sin9k 7 ай бұрын
Если коммент наберет 1000 лайков буде обзор версии 18.3!
@koumyakusuji
@koumyakusuji 7 ай бұрын
лайкайте этот коммент ребята!!😅
@Guru-or7uw
@Guru-or7uw 7 ай бұрын
Включил синяка перед работой под кофе. Такое ощущение, что перед школой мультики смотрю) Хорошую вижимку делаешь, в расслабленой мультяшной форме мне заходит на все 100
@it-sin9k
@it-sin9k 7 ай бұрын
круто!) спасибо! всем мультики!
@mokkamokka4097
@mokkamokka4097 7 ай бұрын
Шикарно! просто и доступно как и во всех остальных видео, спасибо!
@it-sin9k
@it-sin9k 7 ай бұрын
Спасибо большое за поддержку!)
@holakirr
@holakirr 7 ай бұрын
Просто огонь , лучшее пояснение, которое я видел, спасибо!
@it-sin9k
@it-sin9k 7 ай бұрын
Спасибо большое за поддержку!)
@ДмитрийКлименко-п5х
@ДмитрийКлименко-п5х 7 ай бұрын
[14:13 ] Пожалуй это сгодится для анимаций. Например легко сделать анимацию появления, но чтобы сделать какой-нибудь фейд-аут приходится либы для анимаций подключать, либо морочиться самому с тем чтоб фейд-аут отработал до того как компонент целиком не был убран из дома. Спасибо за видос, актуально)
@НиколайРюмин-й6и
@НиколайРюмин-й6и 7 ай бұрын
Как всегда, ты в моем топе😊
@igor_cojocaru
@igor_cojocaru 7 ай бұрын
Спасибо
@SoltRash
@SoltRash 7 ай бұрын
Что-то я где-то это уже видел... ах да, привет Next js
@swayok
@swayok 7 ай бұрын
Хуки форм выглядят интересно, но не уверен что их можно будет использовать в сложных формах где поля ввода могут зависеть от значений других поля ввода. Именно в таких формах особенно хочется какой-то оптимизации кода. Также непонятно что там с типизацией состояния. В тех же кастомных selectах можно реализовывать довольно удобные схемы когда value не является строкой, сохраняя при этом тип в onChange. При отправке на сервер данных в виде json, не form-data - это весьма удобно. Посмотрим. Вообще не понял какую задачу они предлагают решать через use(). Разруливание race condition, конечно, штука полезная, но не таким способом. Тяжелые запросы тупо заспамят сервер. Еще и кешировать промис нужно во внешнем компоненте. Выглядит не особо полезно. Разве что использование внутри if интересное, но у меня ощущение что use - не хук, а простая функция, из-за чего промис и требуется кешировать где-то. Изменения ref порадовали - наконец-то этот головняк с forwardRef решится! Я больше жду компилятор, если будет работать нормально, то можно будет сильно меньше кода писать и меньше думать о том о чем не очень-то хочется думать.
@ichestor509
@ichestor509 7 ай бұрын
да вообще не понятно зачем нам хуки для форм когда есть React Hook Form, проще было бы интегрировать эту библиотеку, раз они для чего то добавили эти хуки
@andreigovorukhin
@andreigovorukhin 22 күн бұрын
@@ichestor509 зачем использовать RHF когда есть tanstack form :)
@ichestor509
@ichestor509 22 күн бұрын
@@andreigovorukhin мммм чет не вижу особой разницы между ними
@andreigovorukhin
@andreigovorukhin 22 күн бұрын
@@ichestor509 попробуй поработать увидишь
@ichestor509
@ichestor509 22 күн бұрын
@andreigovorukhin мне хватило доку посмотреть чтобы понять что разницы там 0, либо пиши отличия раз ты использовал танстак
@DubinArtur
@DubinArtur 7 ай бұрын
Мне нравится желание разработчиков добавить новые хуки. Только скорее всегда многие из них окажутся ситуативными поводами похвастаться для гиков. Для остальных разработчиков это будут фичи из разряда "можно, но не нужно"
@Kildor_nsk
@Kildor_nsk 7 ай бұрын
Похвастаться для гиков и темы для обсудить на собеседованиях. "Какие хуки реакта вы знаете, но никогда не применяли в своих проектах?"
@funkjoker
@funkjoker 7 ай бұрын
По поводу ref cleanup это было можно делать и раньше. Если вешать callbackRef на элемент то при удалении элемента колбэк вызовется с null в качестве node и мы можем почистить event listeners на этом элементе к примеру. И по поводу use а также useContext они не зависят от порядка объявления а только от ближайшего провайдера. Чисто технически и useContext можно было в if пихнуть, но решили оставить warn из-за consistency что ли
@oWeRQ666
@oWeRQ666 7 ай бұрын
Думаю clean up нужен больше для того, чтобы избежать использование внешних состояний, наверняка null все так же будет прилетать, иначе много чего поломается.
@jonyonee
@jonyonee 7 ай бұрын
Когда появится реакт компайлер сможем ли бы делать computed property как во vue?
@it-sin9k
@it-sin9k 7 ай бұрын
хмм, не думаю. А зачем?
@andreigovorukhin
@andreigovorukhin 22 күн бұрын
@@it-sin9k удобно же
@ssurrokk
@ssurrokk 8 күн бұрын
пересмотрел после окончательного выхода React 19 )
@Solozon3
@Solozon3 7 ай бұрын
@it-sin9k, не хочешь приехать в Ульяновск на Улкемп в июле, с каким-нибудь докладом по реакту?
@it-sin9k
@it-sin9k 7 ай бұрын
я к сожалению пока не выездной из Польши, жду получения документов и если выеду обратно въехать не смогу :(
@SergeSchekhovtsov
@SergeSchekhovtsov 7 ай бұрын
Немного не понял, в чем особенность useOptimistic. Выглядит как обычный useState. Почему нужно использовать именно новый хук? Или там в перерисовках дело?
@it-sin9k
@it-sin9k 7 ай бұрын
думаю во внутрянке дело, высокий приоритет рендера, через startTransition и все такое
@AlexanderBorshak
@AlexanderBorshak 7 ай бұрын
Если какие-то хуки (т.е. use()) можно будет использовать в кондишинах, а какие-то нет - это же прямой путь к дичайшему говнокоду. Реакт все дальше и дальше прирастает костылями со всех сторон, и превращается из когда-то простой в использовании библиотеки с классной идеей - UI = f(state) - в какого-то франкельштейна...
@oWeRQ666
@oWeRQ666 7 ай бұрын
Ограничение хуков на использование без условий обусловленно технически, для получения предыдущего состояния, контекст и промис сами являются идентификаторами, поэтому их можно использовать и без этого искусственного ограничения, однако ассинхронное использование все равно должно быть недоступно. Не сказать что часто, но бывают случаи когда контекст нужен не всегда, возможно с промисами нужно будет чаще. К тому же хуки сами по себе ломали принцип чистой функции.
@_boolive_
@_boolive_ 7 ай бұрын
с такими же мыслями воспринимаю все эти обновления. И какие-то неполноценные они.
@AlexanderBorshak
@AlexanderBorshak 7 ай бұрын
@@_boolive_ Разработчики Реакта просто двигаются в какую-то неопределенную сторону. То есть, непонятно, решают они какие-то специфические задачи Фейсбука, или стараются решить какие-то задачи сообщества - и при этом они особо и не раскрывают своих планов. В итоге выглядит как какие-то попытки переизобрести уже работающие и хорошо отлаженные вещи типа REST и RPC, которые к тому же применимы в огромном кол-ве кейсов, а не просто для отрисовки фронтенда. Но пока получается так себе - "без внятного ТЗ результат на выходе - ХЗ..."
@FrontendPlanet
@FrontendPlanet 6 ай бұрын
Прикольно, но про ref я бы упомянул бы еще тот факт, что мало того, что ref можно пропом передавать просто, так еще и HOC forward не нужен
@Alex-bo9wt
@Alex-bo9wt 6 ай бұрын
Круто передавать ref через props, люботытно, а как типизировать его теперь?
@it-sin9k
@it-sin9k 6 ай бұрын
да по идее как и раньше RefObject или как там тип был
@Kira_sk
@Kira_sk 7 ай бұрын
Стоп, а если внутри useActionState вызвать исключение ?
@Владимир.П-е9о
@Владимир.П-е9о 7 ай бұрын
Интересно, как внутри работает use, чтобы дальше не продолжался рендер. Вероятнее всего yield стоит какой-нибудь. По ощущениям, очередной черный ящик, использование которого без понимания внутренностей реакта может привести к сюрпризам.
@dimap6793
@dimap6793 7 ай бұрын
лучше не знать... use кидает exception а Suspense его ловит, можно обернуть use в try-catch и увидеть что он кидает ошибку и там будет ворнинг что не нужно оборачивать use в try-catch. Получается что лучше всего use выносить в самый верх компонента, иначе все что до него будет лишний раз исполнятся
@dimap6793
@dimap6793 7 ай бұрын
еще, честно говоря, я не совсем понимаю в чем сакральный смысл запрета на использование async function компонентов, почему не добавят такую возможность и для клиентских компонентов
@Владимир.П-е9о
@Владимир.П-е9о 7 ай бұрын
@@dimap6793 выходит если между suspense и use будет ErrorBoundary, то финт не сработает?)
@dimap6793
@dimap6793 7 ай бұрын
@@Владимир.П-е9о точно не знаю, наверное как именно ErrorBoundary работает, может ErrorBoundary должен заново кидает исключение если оно пришло из Suspense
@HEX_CAT
@HEX_CAT 7 ай бұрын
❤❤❤🎉🎉🎉
@ashimov1970
@ashimov1970 6 ай бұрын
action и форма вместе в одном серверном компоненте работают? т.е. перед формой не нужно вставлять директиву use client?
@tomtomson8099
@tomtomson8099 7 ай бұрын
Compiler не войдёт в 19. Он отдельно будет
@it-sin9k
@it-sin9k 7 ай бұрын
очень жаль :(
@oWeRQ666
@oWeRQ666 7 ай бұрын
@@it-sin9kМожет это и хорошо, если он не будет прибит гвоздями к реакту
@yundon8182
@yundon8182 7 ай бұрын
А что за новый компилятор
@notimeforhero
@notimeforhero 7 ай бұрын
Немного расстраивает тот факт, что для хука use как и для Suspense/Error Boundary нужно выносить логику обработки на уровень выше. Не совсем понимаю как архитектурно красиво писать код с этим. Как по мне логика const { data, error, isLoading } = useQuery(...) намного удобнее.
@it-sin9k
@it-sin9k 7 ай бұрын
согласен) по мне эта концепция не очень бьется.
@topsportsevents6014
@topsportsevents6014 7 ай бұрын
пока не понятно. для форм react hook form для оптимистик апдейт есть react-query (правда кода прибавляется существенно).
@vurgunkafarzada3008
@vurgunkafarzada3008 7 ай бұрын
в данном примере что мешает вместо useOptimistic использовать useState ?
@it-sin9k
@it-sin9k 7 ай бұрын
думаю оптимизации рендеров. Там вероятно под капотом используется еще transition хук для поднятия приоритета
@alexkorolev2375
@alexkorolev2375 7 ай бұрын
Ты говоришь про старую эпоху двух компонентов Container + View, а какие сейчас видишь новые и эффективные подходы к решению вопроса по разделению бизнес логики и переиспользуемых UI компонентов?
@ichestor509
@ichestor509 7 ай бұрын
абстракция, если ты хочешь один набор компонентов использовать в куче разных логик, такое себе решение, ибо бизнес логика не всегда совпадает, а часто в мелочах различие которое и не позволит
@sergnazarchuk1003
@sergnazarchuk1003 7 ай бұрын
nice
@tastypurgen
@tastypurgen 7 ай бұрын
компайлера не будет на релизе =(
@tagnati5585
@tagnati5585 7 ай бұрын
А где коммент про варнинги?
@alexanderbaltsevich9270
@alexanderbaltsevich9270 7 ай бұрын
Уже добавил)
@chilibean6152
@chilibean6152 7 ай бұрын
Заходит мультяшный стиль
@it-sin9k
@it-sin9k 7 ай бұрын
круто!) это упрощает нам выпуск роликов)
@kri4evskiy
@kri4evskiy 7 ай бұрын
Давай видео про варнинги! Интересно будет прикинуть возможность перехода среднего проекта с замысловатой логикой на 19ую версию
@it-sin9k
@it-sin9k 7 ай бұрын
есть идея, такое видео записать, но надо сразу, чтобы 19-ая версия стабильная вышла)
@ArtemMindsurfer
@ArtemMindsurfer 5 ай бұрын
надо было называть
@fuad2069
@fuad2069 7 ай бұрын
Месяц назад нужен был на подобии useOptimistic
@SmallWish
@SmallWish 7 ай бұрын
Он всегда нужен
@izzei-1614
@izzei-1614 7 ай бұрын
@@SmallWish не всегда, многие приложения сделаны без optimistic UI
@grandphone3585
@grandphone3585 7 ай бұрын
Вы точно импортировали useFormStatus из react-dom?
@eduardkoshkelyan8670
@eduardkoshkelyan8670 7 ай бұрын
точно нет )) походу из react-а пробовал
@eduardkoshkelyan8670
@eduardkoshkelyan8670 7 ай бұрын
т.к. в react-dom работает на 100%
@it-sin9k
@it-sin9k 7 ай бұрын
вот блин, я брал его из react o_O
@sequend
@sequend 7 ай бұрын
useOptimistic - хук с сомнительной полезностью. Кейс: стена с записями, листаю, оставляю лайки. На очередной записи ткнул лайк (читай - добавил в избранное), useOptimistic отработал и я вижу что поставил лайк, листаю дальше и тут оказывается, что по какой-то (любой) причине запрос на сервер не прошел или вернулась ошибка. Как итог - я уверен, что запись добавлена в избранное, однако как только я зайду в избранное - этой записи не будет. 🤷‍♂ Две стороны медали.. с точки зрения UX - гуд, но для DX - придется точно также обрабатывать кейс неудачным добавлением в избранное (как-то уведомить пользователя).
@aleksprimetv
@aleksprimetv 7 ай бұрын
ага и потом опять скролить наверх и искать где ты там не проставил
@denpol9956
@denpol9956 7 ай бұрын
12:15 - ни один запрос не отменился и фраза "Проблемы решены из коробки" 😵‍💫 🤯 возникают вопросы... Ладно, делаем скидку, что решены только проблемы рендера последнего ответа, остальное - проблемы негров )
@евгенийсергеевич-ю9щ
@евгенийсергеевич-ю9щ 7 ай бұрын
Для реальных проектов мне для форм нужна функция валидации
@it-sin9k
@it-sin9k 7 ай бұрын
да, я так понимаю они тоже хотят либо нативную чтобы мы использовали, либо уже внутри хука допиливали валидацию
@MegaBeshka
@MegaBeshka 7 ай бұрын
Props реактивные, а ref нет. Не вписывается в концепцию props, поэтому отдельно таскают
@АлександрКасатов
@АлександрКасатов 7 ай бұрын
Один гитарист приходит в магазин, покупает любую гитару за свои деньги и идет делать музыку. Другой - бесконечно изучает, как ясень или клен влияет на звук, какая накладка на гриф лучше, как материал верхнего порожка способен выделить средние частоты. При этом не создавая никаких музыкальных произведений. Во фронтенд-разработке больше всего раздражает тенденция к тому, что все мы должны быть этим вторым гитаристом, чтобы успеть за прогрессом. Вместо того, чтобы просто делать сайты, приходится большую часть времени посвящать изучению инструментария. Самое фиговое, что это все будут спрашивать на собесах и делать выводы о разработчике - а использовал ли он новые хуки из реакт19-25-50, а работал ли с новой библиотекой компонентов с революционным подходом к теням на инпутах, и т.д. Подавляющее большинство веб-приложений - это несложный CRUD, и делать его можно на чем угодно. А все эти нововведения - это самовыражение безусловно крутых разрабов из реакт-команды, которым скучно делать сайты, поэтому они работают над тем, чтобы не заскучали прикладные разрабы. Но проблема в том, что я и не думал скучать, и хочу просто делать продукт и совершенствовать свой код - не применением новых либ, а применением новых подходов в парадигме и архитектуре. Я люблю изучать новое, но не из разряда "теперь вот эту функцию пишем вот так, а это прописываем сюда". В этом нет по факту ничего нового. Но мыслительного ресурса и времени это бесконечно пережеванное старое, выдаваемое за революционное новое, отжирает прилично. PS. Это не наезд на автора, канал люблю и смотрю постоянно. Просто высказался о наболевшем.
@romanpoludnev4140
@romanpoludnev4140 7 ай бұрын
Причем на собесе от разраба будут хотеть чтобы он и useOptimistic использовал, и чтобы как там componentShouldUnmount работает знал.
@Roger-qj4wu
@Roger-qj4wu 7 ай бұрын
Так учи ангуляр, кек. Всё что ты перечислил в основном относится к реакту
@romanpoludnev4140
@romanpoludnev4140 7 ай бұрын
@@Roger-qj4wu да действительно, че это я.
@it-sin9k
@it-sin9k 7 ай бұрын
так почти 5 лет не было же новых версий) все было максимально стабильным))
@aboba86468
@aboba86468 7 ай бұрын
@@it-sin9k ага, было стабильным) верю а весь этот ssr хайп наверное только добавил стабильности, и react к этому не имеет никакого отношения, тупа случайно рекламируя next на своём сайте
@iwmatt
@iwmatt 7 ай бұрын
Из полезного: обновление рефа, контекста. Всё остальное бесполезный хлам...
@Nini-sv1bd
@Nini-sv1bd 7 ай бұрын
Как юзал antd form так и продолжу. Лучшая форма
@ИванИванов-ц5ю6х
@ИванИванов-ц5ю6х 7 ай бұрын
расскажешь
@aleksprimetv
@aleksprimetv 7 ай бұрын
солгласен антд топчик
@uCryNet
@uCryNet 7 ай бұрын
Чем дальше, тем больше React превращается в говно. А от ref норм
@paulokaydan
@paulokaydan 6 ай бұрын
kzbin.info/www/bejne/joCkZHuBjbWGhJI для очистки таймаутов и интервалов
Выжимка первого дня React Conf: Краткий обзор
8:59
99.9% IMPOSSIBLE
00:24
STORROR
Рет қаралды 31 МЛН
It works #beatbox #tiktok
00:34
BeatboxJCOP
Рет қаралды 41 МЛН
REAL or FAKE? #beatbox #tiktok
01:03
BeatboxJCOP
Рет қаралды 18 МЛН
Cat mode and a glass of water #family #humor #fun
00:22
Kotiki_Z
Рет қаралды 42 МЛН
Every React Concept Explained in 12 Minutes
11:53
Code Bootcamp
Рет қаралды 860 М.
React 19 is finally out!
28:01
Theo - t3․gg
Рет қаралды 68 М.
React 19: Новые хуки, которые вы ждали
21:13
Владилен Минин
Рет қаралды 10 М.
Способы разработки веб-сайтов
25:03
Vallek: фронтенд и образование
Рет қаралды 14 М.
Все о React 19 за 10 минут
10:47
Frontend Fundamentals | Александр Караджиков
Рет қаралды 10 М.
Открываем все секреты React Context API
1:01:11
АйТи Синяк
Рет қаралды 22 М.
99.9% IMPOSSIBLE
00:24
STORROR
Рет қаралды 31 МЛН