Новые хуки useTransition и useDeferredValue в React 18

  Рет қаралды 21,232

Михаил Непомнящий

Михаил Непомнящий

2 жыл бұрын

Конкурентный режим в React 18 позволяет помечать некоторые обновления стейта как несрочные, за счет чего улучшается пользовательский опыт. Приложение становится более стабильным, т.е. не лагает с точки зрения интерфейса, а несрочные обновления становятся асинхронными. Для этих целей React предложил нам два новых хука useTransition и useDeferredValue.
Пример из видео: codesandbox.io/s/react-concur...
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru/rm/nepomnyasch...
paypal.me/mishanep

Пікірлер: 58
@dirty_arkady
@dirty_arkady 2 жыл бұрын
Канал определенно обделен просмотрами, очень хорошая подача материала!
@user-fo8zl6iw9u
@user-fo8zl6iw9u 6 ай бұрын
На мой взгляд подача недостаточно хорошая. Даже в доке реакта намного понятнее и проще изложены концепты.
@etatevosian
@etatevosian Жыл бұрын
Очень понравился канал. Очень мало в сети подобных доступных к понимаю материалов. Спасибо автору!
@lightinthedark5708
@lightinthedark5708 2 жыл бұрын
Михаил, ценю Вас и Ваш канал за доступное и понятное объяснение. Спасибо за видео.
@AlexGabber
@AlexGabber Жыл бұрын
Очень простое и наглядное объяснение. Спасибо большое!
@SergAlexson
@SergAlexson 2 жыл бұрын
Миша, спасибо за видео! Все подробно и доступно разжёвано)
@atlantatesla9348
@atlantatesla9348 Жыл бұрын
Рада, что нашла это видео. Отличное и доступное объяснение! На русском языке не так много хороших видео о фичах 18 версии react'а. Успехов вам!
@WinchesterD
@WinchesterD 7 ай бұрын
Спасибо за видео, готовлюсь к интервью по Реакту, будет что рассказать. :)
@user-ik8rn3lp7u
@user-ik8rn3lp7u 5 ай бұрын
Михаил благодарю за чёткое доходчивое видео, я с лёгкостью усвоил данный материал! Было интересно и полезно! 🎉
@koala2077
@koala2077 Жыл бұрын
Спасибо за ролик. Читал статьи насчет конкурентного режима но так и не понимал до конца что это такое. Ваше видео хорошо объясняет эту концепцию)
@unknown.6914
@unknown.6914 2 ай бұрын
Спасибо, за полезный контент Михаил
@user-zs7kr6yp2s
@user-zs7kr6yp2s 7 ай бұрын
лучшее объяснение конкуретного режима, спасибо за работу
@ivanoliinyk8404
@ivanoliinyk8404 Жыл бұрын
Дуже дивно чому так мало переглядів та вподобайок, але не зупиняйся ми це виправимо)))
@dr_morpho
@dr_morpho Жыл бұрын
Супер! Спасибо вам🤝
@fizzbuzz5807
@fizzbuzz5807 2 жыл бұрын
Большое спасибо! Вот вам комментарий, лайк и подписка!
@user-kg6fz5tz2b
@user-kg6fz5tz2b 2 жыл бұрын
Спасибо!
@vladvoloshenko5701
@vladvoloshenko5701 Жыл бұрын
спасибо за контент, огонь!!
@user-dy9zo3oq6k
@user-dy9zo3oq6k 2 жыл бұрын
Познавательно, лайк)
@krohinri
@krohinri Жыл бұрын
Миша, спасибо! Давай еще!
@WebEnv
@WebEnv 2 жыл бұрын
Оч доступно, спасибо!
@user-qc2ft6pz7h
@user-qc2ft6pz7h Жыл бұрын
Очень мало лайков))Подача отличная, приятно слушать вас)
@daimon31999
@daimon31999 Жыл бұрын
Мое уважение 🎩
@vasyok92
@vasyok92 2 жыл бұрын
Спасибо)
@onevermore
@onevermore 2 жыл бұрын
спасибо!
@user-qb7jg4hx5l
@user-qb7jg4hx5l 9 ай бұрын
Спасибо
@AndrewFloatrx
@AndrewFloatrx Жыл бұрын
также рекомендую ознакомиться с такими паттернами как debounce & throttle ))) до выхода этих хуков юзали именно их...
@The14Some1
@The14Some1 Жыл бұрын
Мне кажется, и после выхода этих хуков продолжат. Тут это выглядит как не очень контроллируемая полумера. У автора по-прежнему тормозит ввод, тогда как при debounce/throttle можно добиться совершенно нормального поведения даже на очень тормозном компьютере.
@NeoCoding
@NeoCoding 6 ай бұрын
тоже в копилку, грасиас
@irinal7766
@irinal7766 Жыл бұрын
Отличнейший канал!
@Moishe_Rubinstein
@Moishe_Rubinstein Жыл бұрын
Привет из Харькова!
@mishanep
@mishanep Жыл бұрын
Привет из Малаги.
@Ivanesenses
@Ivanesenses 2 жыл бұрын
Лайк неглядя!
@agrbear
@agrbear 2 жыл бұрын
Спасибо за видео, немного не по теме вопрос, вы делаете акцент на том что инпут не управляемый, а в чем отличие если бы он был управляемый ?🙏
@mishanep
@mishanep 2 жыл бұрын
Мы отдельно хранили его значение в стейте и спускали бы его на поле value для инпута. В принципе можно и с управляемым сделать, просто не понижать приоритет для стейта введенного значения.
@user-ug7ur8xu1c
@user-ug7ur8xu1c Жыл бұрын
Интересно как это будет работать когда у нас данные, которые мы получаем с AJAX запросов, будут лететь в redux стору. И соответственно перерендер компонента будет форсить useSelector, а не изменение стейда компонента. Как пример, такая же ситуация как на видео, но фильтрация у нас происходит на стороне бэка
@AndrewFloatrx
@AndrewFloatrx Жыл бұрын
используйте debounce для оптимизации запросов...
@LRXAORLOV
@LRXAORLOV 2 жыл бұрын
А если бы мы положили search в useDeferredValue, и фильтровали по deferredSearch ?
@suslikest3708
@suslikest3708 2 жыл бұрын
лойс!
@user-gi8pn8or7l
@user-gi8pn8or7l 3 ай бұрын
Привет! корректно ли оборачивать, например, отправку на сервер данных через axios в startTransition: const onSubmit = (values: z.infer) => { startTransition(() => { login(values) }) }, и да, в данном случае я использую Nextjs, здесь "login" это сервер экшн. Но все равно интересно
@deriirostyslav2335
@deriirostyslav2335 Жыл бұрын
Михаил добрый день, ищу видео как взаимодействовать с несколькими страницами в приложении? и как масштабировать приложения. Допустим нажам на кнопку на первой странице, передать данные (избранной карточки на другую) и на оборот, и допустим ввести данные на второй странице и создать из них список на третьей, и это всё разные страницы. ничего не помогает, всё перепробывал. благодарю!
@IanNerovny
@IanNerovny Жыл бұрын
Все равно ведь дебаунс и тротлинг во всем выигрывает, как мне показалось. Есть ли тогда какой-то кейс, где все же может быть предпочительнее использовать useTransition? Мне кажется, что нет.. Очень жду дебаус и тротлинг хуки в Реакте из коробки)) Совсем не понимаю, почему до сих пор не решили это добавить
@profesor08
@profesor08 Жыл бұрын
Штука однозначно полезная, но от проблемы не избавляет, а лишь приуменьшает ее, и на каком-то средненьком телефоне, будет проявляться довольно заметно. Чтоб полностью избавиться от блокировки инпута, надо несколько иначе формировать компоненты, чтоб список рендерился отдельно, инпут отдельно, и данные считались отдельно. А сам пользовательский ввод надо как-то тротлить, например с помощью функций из lodash. И вот тогда даже на средненьких телефонах все будет круто.
@sharkman6434
@sharkman6434 10 ай бұрын
а в чём смысл и преимущество ренедерить отдельно список, инпут и счтёт данных подскажите пожалуйста )
@vladislavkomkov5178
@vladislavkomkov5178 2 ай бұрын
Что за адовые надстройки на реакте? Не уж то в этом есть эта необходимость??
@romandeveloper7720
@romandeveloper7720 Жыл бұрын
Таким образом, хуки помогают сделать мини-дебаунсинг, если так можно выразиться) Верно?
@mishanep
@mishanep Жыл бұрын
Что-то вроде него, да.
@iGotton
@iGotton 2 жыл бұрын
+
@codokit
@codokit 2 жыл бұрын
Ещё вариант решения проблем с быстрым вводом - это тротлить пользовательский ввод.
@CJIu3eHb
@CJIu3eHb 2 жыл бұрын
Не тротлить, а дебонсить.
@MIHANIZM56
@MIHANIZM56 Жыл бұрын
Тоже самое хотел предложить. Интересно имеет ли смысл связка дебаунса и стартТранзишн
@user-888azim-97
@user-888azim-97 Жыл бұрын
нужно было разделить на 2 видео ((((( просмотров бы больше было, и денег бы больше было, хотя конечно от рф теперь нет монетизации, но всё равно удобнее было бы.
@mishanep
@mishanep Жыл бұрын
У меня на канале никогда не было рекламы =) Ютуб конечно может и сам вставки делать, не спрашивая автора. Но монетизацию на данном канале я не включал.
@sivkaburka1062
@sivkaburka1062 2 жыл бұрын
Досмотрел до 11:20
@orionpro79
@orionpro79 Жыл бұрын
а дальше что? Инет вырубили?)
@your_hero_n1
@your_hero_n1 2 ай бұрын
некорректно подал информацию. Может за год что и изменилось, но в доке чётко сказано, что startTransition и его хук не предназначены для того, чтобы помечать, как переходы изменения в инпутах. Поэтому у автора и тормозил пользовательский ввод даже после применения новой функции.
@user-lk4mb3nw3d
@user-lk4mb3nw3d 3 ай бұрын
Эм, ну поиск на клиенте это тоже не бест практис ) Ну и фильрацию по каждому клику делать тоже не очч, наверно сюда лучше подошел дебаунсе?
@chintore
@chintore 11 ай бұрын
useDeferredValue работает в связке с мемоизацией. При изменении в инпуте он выдает значение с прошлого успешного рендеринга (коммита) и запускает новый рендеринг с уже актуальным значением. Соответственно после изменения инпута происходит сразу рендеринг инпута и МЕМОИЗИРОВАННОГО результата для ресурсозатратной части. Сразу после этого реакт начинает еще один рендеринг, но теперь useDeferredValue возвращает актуальное значение. После готовности второго рендеринга актуальный результат отрисовывается. Без мемоизации useDeferredValue бесполезен, и даже вреден.
@chintore
@chintore 11 ай бұрын
Новые изменения инпута могут прервать прошлые незаконченные рендеринги и запустить новый процесс. Соответственно ресурсозатратные вычисления ПОЛНОСТЬЮ будут производиться не для каждого введенного символа, а только для последнего изменения. Это все хорошо показано на схеме в видео. Логика очень схожа с debouncing.
Кастомные React-Хуки, useToggle, useLocalStorage
22:20
Михаил Непомнящий
Рет қаралды 18 М.
useTransition и useDeferredValue хуки в React
17:47
easydev
Рет қаралды 1,1 М.
когда достали одноклассники!
00:49
БРУНО
Рет қаралды 1,5 МЛН
React 18 useDeferredValue Hook Crash Course
7:52
Web Dev Simplified
Рет қаралды 67 М.
Новые хуки для React 19 и другие фишки
18:01
Михаил Непомнящий
Рет қаралды 20 М.
Асинхронная работа с Redux Toolkit и createAsyncThunk
42:24
Михаил Непомнящий
Рет қаралды 100 М.
🐬 ВСЕ ХУКИ REACT JS 2024 - вы точно не знаете их все
13:29
SIBERIA CAN CODE 🧊 - Frontend
Рет қаралды 6 М.
Learn React Hooks: useTransition - Simply Explained!
10:41
Cosden Solutions
Рет қаралды 19 М.
Почему удалять StrictMode плохая идея?
9:30
АйТи Синяк
Рет қаралды 16 М.