![АйТи Синяк](/img/default-banner.jpg)
- Видео 84
- Просмотров 1 498 981
АйТи Синяк
Беларусь
Добавлен 13 окт 2019
Всем привет!
Я Фронтенд разработчик со стажем более 10-и лет в HTML, CSS и JS. У меня опыт в самых разных областях: социальные сети, бухгалтерский учет, недвижимость и мессенджер наподобие Телеграм. Технические требования к этим проектам самые разные: адаптивность, сокеты, кэширование сервис воркерами, бесконечные пуш уведомления и даже переиспользуемость кода между Веб версией и React Native.
Все эти задачи можно решать по-разному, и я хочу поделиться своим личным набором лучших практик. Надеюсь, что каждый сможет почерпнуть что-то новое и полезное для себя, а также это вдохновит других разработчиков поделиться своими знаниями на этом канале.
И самое главное, пишите комменты если вы с чем-то не согласны или вы знаете вариант лучше, ведь только в обсуждении рождается истина!
А пока наслаждайтесь нашим культовым плейлистом трюков с react-router
Я Фронтенд разработчик со стажем более 10-и лет в HTML, CSS и JS. У меня опыт в самых разных областях: социальные сети, бухгалтерский учет, недвижимость и мессенджер наподобие Телеграм. Технические требования к этим проектам самые разные: адаптивность, сокеты, кэширование сервис воркерами, бесконечные пуш уведомления и даже переиспользуемость кода между Веб версией и React Native.
Все эти задачи можно решать по-разному, и я хочу поделиться своим личным набором лучших практик. Надеюсь, что каждый сможет почерпнуть что-то новое и полезное для себя, а также это вдохновит других разработчиков поделиться своими знаниями на этом канале.
И самое главное, пишите комменты если вы с чем-то не согласны или вы знаете вариант лучше, ведь только в обсуждении рождается истина!
А пока наслаждайтесь нашим культовым плейлистом трюков с react-router
Победит ли Zustand старичка Redux?
Сегодня Zustand является номером 2 в мире стейт менджеров React. Его основные соперники это Redux и MobX. Выйдет ли Zustand на первое место? Буду ли я его использовать в своих проект? Все это обсудим в новом видео
ТГ канал - t.me/it_sin9k
Поддержать Айти Синяка можно здесь:
RUclips: ruclips.net/channel/UClgj-KWiNaOo9H1rz1ISO6Qjoin
boosty: boosty.to/sin9k
Patreon: www.patreon.com/ITSin9k
00:00 Анонс темы
00:33 Изучаем документацию
02:50 Как достать весь стор
03:10 Достаем данные кусками
05:03 Async метод
05:22 Persist
05:43 Reselect
06:06 Итоги
Подписаться на канал: ruclips.net/channel/UClgj-KWiNaOo9H1rz1ISO6Q
Twitter: it_sin9k
ТГ канал - t.me/it_sin9k
Поддержать Айти Синяка можно здесь:
RUclips: ruclips.net/channel/UClgj-KWiNaOo9H1rz1ISO6Qjoin
boosty: boosty.to/sin9k
Patreon: www.patreon.com/ITSin9k
00:00 Анонс темы
00:33 Изучаем документацию
02:50 Как достать весь стор
03:10 Достаем данные кусками
05:03 Async метод
05:22 Persist
05:43 Reselect
06:06 Итоги
Подписаться на канал: ruclips.net/channel/UClgj-KWiNaOo9H1rz1ISO6Q
Twitter: it_sin9k
Просмотров: 12 073
Видео
Выжимка второго дня React Conf: Краткий обзор
Просмотров 7 тыс.Месяц назад
Windows и Microsoft Word пишут на React Native. Новая RN архитектура. Пиксели, проценты и многое другое в RN. Эра фреймворков на RN. CSS-in-JS стал быстрее. Разработка под Apple Vision. И многое другое во 2-ом дне самой популярной React конференции Конференция день 2 - ruclips.net/video/0ckOUBiuxVY/видео.html Ссылки на доклады: - React Native State - ruclips.net/video/0ckOUBiuxVY/видео.html?t=2...
Выжимка первого дня React Conf: Краткий обзор
Просмотров 17 тыс.Месяц назад
React Compiler это взрыв мозга. Анонс React Router v7. Серверные компоненты даже на React Native и многое другое нам рассказали только в первый день конференции. Я подготовил для вас краткую выжимку по всем докладам Конференция день 1 - ruclips.net/video/T8TZQ6k4SLE/видео.html Ссылки на доклады: - начинается эра фреймворков - ruclips.net/video/T8TZQ6k4SLE/видео.html?t=2383 - metadata - ruclips....
Тестируем React 19 BETA (use, useActionState, useOptimistic, useFormStatus, context)
Просмотров 14 тыс.Месяц назад
use, useActionState, useOptimistic, useFormStatus, context. 25 апреля React команда наделала много шума. Была опубликована 18.3 версия React, бета 19-ой версии и самое ценное - статья с тем, что вошло в бету 19-ой версии. И конечно же я все испытал на прочность! React 19 beta - react.dev/blog/2024/04/25/react-19 formData MDN - developer.mozilla.org/en-US/docs/Web/API/FormData ТГ канал - t.me/it...
Варианты реактивного программирования в реальных проектах (не RxJS)
Просмотров 11 тыс.2 месяца назад
Слыша фразу “реактивное программирование” в React, большинство думает об инструментах типа RxJS, но надо помнить, что реактивное программирование - это парадигма, а не инструмент. И сегодня мы рассмотрим как эта парадигма была применена в реальных проектах Забрать бесплатные ресурсы и 4000 бонусов от Cloud․ru можно на сайте: sc.link/GOnZX ТГ канал - t.me/it_sin9k Поддержать Айти Синяка можно зд...
Стоит ли использовать useQuery в своих проектах?
Просмотров 13 тыс.2 месяца назад
Что вы знаете о react-query? Это один хук useQuery? Он еще какой то хук предоставляет? Почему эту либу устанавливает каждый 10-ый проект? Попробуем разобраться с этими вопросами в новом видео Статья: tkdodo.eu/blog/why-you-want-react-query Демо: github.com/Sin9k/react-query-demo ТГ канал - t.me/it_sin9k Поддержать Айти Синяка можно здесь: RUclips: ruclips.net/channel/UClgj-KWiNaOo9H1rz1ISO6Qjoi...
4 способа побороть Race Condition
Просмотров 9 тыс.3 месяца назад
В каждом проекте встречается проблема Race Condition. И из моего опыта многие игнорируют ее, пока уже тестировщик явно не укажет на баг. И сегодня мы рассмотрим 4 способа как всего в пару строк побороть Race Condition Разверните мощную облачную базу данных за пару кликов в Selectel: slc.tl/fssx2 документация useEffect - react.dev/reference/react/useEffect Первая часть видео: ruclips.net/video/V...
Как я работаю с debounce? "нет useEffect, нет бага" часть 2
Просмотров 11 тыс.4 месяца назад
Это вторая часть видео о наболевшем. В этот раз я поделюсь вариантом, как я работаю с debounce. На первый взгляд кажется тема не сложная, но исследование вышло очень интересное! Первая часть видео: ruclips.net/video/VfYhs4lgMSM/видео.html Английская версия канала AI Bruise - ruclips.net/channel/UCxmwNWXYWiNMXWy3VRmfEkw ТГ канал - t.me/it_sin9k Поддержать Айти Синяка можно здесь: RUclips: ruclip...
Нет useEffect, нет бага || Альтернативное мышление
Просмотров 32 тыс.4 месяца назад
Это видео о наболевшем. История о мелкой ситуации в ежедневной разработке, которую я не понимаю и очень устал от нее. Но почему то люди очень любят этот подход. Ну что ж попробуем дать этому бой! Английская версия канала AI Bruise - ruclips.net/channel/UCxmwNWXYWiNMXWy3VRmfEkw ТГ канал - t.me/it_sin9k Поддержать Айти Синяка можно здесь: RUclips: ruclips.net/channel/UClgj-KWiNaOo9H1rz1ISO6Qjoin ...
Как сделать Loader / Skeleton для серверных компонентов
Просмотров 9 тыс.5 месяцев назад
NextJS Streaming - это хитрый трюк от создателя NextJS для отрисовки скелетона пока происходит await серверных компонентов. Мне идея очень понравилась Ссылка на телеграмм канал t.me/it_sin9k Поддержать Айти Синяка можно здесь: RUclips: ruclips.net/channel/UClgj-KWiNaOo9H1rz1ISO6Qjoin boosty: boosty.to/sin9k Patreon: www.patreon.com/ITSin9k 00:00 Анонс темы 00:35 Loader для серверных компонентов...
Изучаем примитивный streaming на уровне сети
Просмотров 10 тыс.6 месяцев назад
1 http запрос - 1 ответ. Это то к чему мы все привыкли работая с сервером. Но на самом деле server может делать куда более сложные вещи. И сегодня мы познакомимся с одним таким вариантом! Обещанная ссылка на то как NextJS использует streaming: ruclips.net/video/3-dLp4Ei2uQ/видео.html Код из видео: github.com/Sin9k/simple-streaming Ссылка на телеграмм канал t.me/it_sin9k Поддержать Айти Синяка м...
Фронтендеры поглощают бэкэнд! Больше никаких эндпоинтов!
Просмотров 13 тыс.6 месяцев назад
React Server Actions намерен превратить большинство фронтенд разработчиков в фулстек! Ведь теперь бэкэнд будет распологаться настолько близко к React коду, что выделять это в отдельную профессию не имеет никакого смысла. Убедитесь в этом сами и приятного просмотра! Ссылка на телеграмм канал t.me/it_sin9k Поддержать Айти Синяка можно здесь: RUclips: ruclips.net/channel/UClgj-KWiNaOo9H1rz1ISO6Qjo...
Абсолютно новое мышление с Server Components
Просмотров 18 тыс.7 месяцев назад
React Server Components - это не просто новая фича, а новая архитектура React приложений. Теперь мы можем выбросить кучу хуков, оптимизировать рендеры компонентов до небывалого уровня, но за это вам придется полностью переосмыслить способ написания вашего проекта. Как именно это работает смотрите в новом видео! Ссылка на телеграмм канал t.me/it_sin9k Поддержать Айти Синяка можно здесь: RUclips:...
Сравниваем первую загрузку SSR и SPA
Просмотров 19 тыс.8 месяцев назад
Многие слышали про SSR очень много, но не углублялись в то как это работает. Данное видео направлено на то чтобы закрыть эти пробелы! Ссылка на телеграмм канал t.me/it_sin9k Поддержать Айти Синяка можно здесь: RUclips: ruclips.net/channel/UClgj-KWiNaOo9H1rz1ISO6Qjoin boosty: boosty.to/sin9k Patreon: www.patreon.com/ITSin9k 00:00 Анонс темы 00:27 Как работает SPA 03:00 Как работает SSR 06:34 Ито...
Почему удалять StrictMode плохая идея?
Просмотров 17 тыс.9 месяцев назад
Во всех моих проектах StrictMode удалялся при старте проекта. И сегодня я разберу в деталях почему это была плохая идея! StrictMode документация - react.dev/reference/react/StrictMode Ссылка на телеграмм канал t.me/it_sin9k Поддержать Айти Синяка можно здесь: RUclips: ruclips.net/channel/UClgj-KWiNaOo9H1rz1ISO6Qjoin boosty: boosty.to/sin9k Patreon: www.patreon.com/ITSin9k 00:00 Анонс темы 00:36...
Создавать CSS анимации стало очень просто! + новый формат
Просмотров 12 тыс.9 месяцев назад
Создавать CSS анимации стало очень просто! новый формат
Как стартовать новый проект в 2023 году?
Просмотров 31 тыс.10 месяцев назад
Как стартовать новый проект в 2023 году?
Работа с массивами стала намного удобнее!
Просмотров 19 тыс.11 месяцев назад
Работа с массивами стала намного удобнее!
Полный курс по useId за 10 минут!
Просмотров 15 тыс.11 месяцев назад
Полный курс по useId за 10 минут!
Чем закончилась история с Concurrent Mode? Глава 3
Просмотров 7 тыс.Год назад
Чем закончилась история с Concurrent Mode? Глава 3
Почему нам пришлось переписывать проекты. Глава 2
Просмотров 10 тыс.Год назад
Почему нам пришлось переписывать проекты. Глава 2
Что такое Concurrent в React ??? Глава 1
Просмотров 14 тыс.Год назад
Что такое Concurrent в React ??? Глава 1
Плохой код больше не проблема! Компилятор все исправит
Просмотров 16 тыс.Год назад
Плохой код больше не проблема! Компилятор все исправит
Ламповый созвон на тему React Router 6.4+
Просмотров 4,9 тыс.Год назад
Ламповый созвон на тему React Router 6.4
React Router Form - совместили несовместимое
Просмотров 9 тыс.Год назад
React Router Form - совместили несовместимое
⚡ Router теперь умеет отправлять запросы ⚡
Просмотров 16 тыс.Год назад
⚡ Router теперь умеет отправлять запросы ⚡
React Batching от создания (v0.4.0) до React 18
Просмотров 18 тыс.Год назад
React Batching от создания (v0.4.0) до React 18
Делюсь опытом по использованию reselect
Просмотров 9 тыс.Год назад
Делюсь опытом по использованию reselect
У меня был опыт с Zustand для SPA приложения. Крайне положительный опыт: нулевой порог вхождения, легковесный, никакого бойлерплейта
Удалил со своего проекта СтриктМод, а потом подумал, и удалил весь реакт из проекта. Потому что да, вот поэтому, все как мы любим, гениальные идеи типа а давайте в деве будет не так, как на продакшене. А давайте еще цвета будут другими, и шрифты? А то люди не следят за контрастами и аксессебилити, почему нет? А заодно и писать на деве давайте на другом языке, а потом переписывать в продашен. Ах да, и на другой платформе, давайте в деве на другой платформе писать. А на продакшене -- тоже в другой. Вот и удалил, хорошая же идея.
Прикольно, но про ref я бы упомянул бы еще тот факт, что мало того, что ref можно пропом передавать просто, так еще и HOC forward не нужен
Интересно получилось бы сложному проекту на редакс сага перейти на Zustand + react query?
тут надо смотреть, насколько вы замазаны перемазаны сагой и редаксом)
пользовалась forwardRef чтобы прокинуть что-то в какой-то компонент MUI.. в формы что ли.. да, память как у рыбки, простите.
Спасибо за работу
Удивительно как до реакт коммьюнити долго доходит, что они делают какую-то чушню
effector же
надо и на него обзор сделать)
Ю-туп туториалы прошли полный круг - сначала учат людей как не надо делать - использовать асинхронные вызовы прямо из компонентов, а затем как костылять эту херню, которой они научили.
Zustand очень плохо работает с Next. У них есть инструкция как его к нему подключать, но там просто жуткая простыня для каждого стора, который нужно создать. По сути если я использую Next то вся эта элегантность превращается в мрак с `useContext` и провайдорами. Идея интересная. Мне нравится, что он такой легкий и для классического SPA он хорош. Но вот ни с Astro ни с Next он к сожалению не умеет
Правильно "цуштанд"
rtk он не обгонит скорей всего, если он не станет ztk xD
ща бы в 2024 сравнивать килобайтики либ
люблю спички считать)
ЦУШТАНД, ну епана
сравнивать RTK и Zustand по килобайтам.... ну такое... такое...
А какие щас бест практис, чтобы делать HTTP запросы?
Крутое видео
Почему-то, при сравнении какого-нибудь стейт-менеджера с Redux, подразумевается самый первый вариант его использования из 2015. А если ещё убрать асинхронные экшены, как предлагается в видео, то отличий будет совсем немного.)
О, это Вы еще значит не знаете про Valtio :-) вот эта мне реально понравилась. Особенно то что оно работает как для React'а, так и для Vanilla. Т.е. я могу снаружи изменить стейт и компонент перерисуется, плюс я гонял его на SSR и на клиенте, прекрасно работает.
После видео я пошел изучать зустанд через доку, уже зная редакс/тулкит. Выучил за 3 часа все что нужно, спасибо за мотивацию ❤
"Для меня Zustand стал стейт менеджером номер 1" "Я ни разу не использовал его в продакшене" Синяк наваливает базу
первое скорее про эмоции, а второе по фактам))
❤
А потом вдруг… приложение сложнее чем привет мир.. и оказывается что есть проблемы с оптимизацией:/
что за проблемы?)
Слава богу)) я думал ты уже в инсту перешел😊
ахахах) на самом деле мы работаем над проектиком одним в фоне для Синяка)
У меня к zustand лишь одна претензия - ооочень сильная завязка на react. Использование сторов вне компонентов неудобное, из-за чего есть проблема с вынесением бизнес логики в отдельные сервисы. Приходится все равно все закручивать вокруг react компонентов, из-за чего ui и логика очень тесно связываются Мне было бы интересно посмотреть на упомянутый в видео способ работы с асинхронными action-ами, очень жду!:)
в моем банке добавляли зустанд, сделали много ошибок при работе с ним. Полный запрет на асинхронный код - вот тут верно, мы не вовремя это поняли и многие куски кода пришлось перепиливать, *persist добавлял на пару страниц, но я не совсем успел попробовать на более сложных вещах (увольнялся из-за маленькой зп). В целом зустан заслуживает первое место в проектах. Щас работаю в другом проекте и использую редакс и честно скажу - зустан не победит редакс! у него другая архитектура и подход к проектам, что заменить редакс на зустанд будет ой как не просто
при размерах проектов в мегабайты считать разницу в десять килобайт?
так проекты и становятся мегабайтными, потому что никто не считает килобайты)
@@it-sin9k так если кода не одна тысяча строк. подключаемые библиотеки меркнут на фоне кода самого проекта.
Как из ничего сделать видос на 8 минут))) спасибо, что почитал доку за меня
Всегда к твоим услугам)
Создатель либы японец Диши Като произносит зустанд как Зустанд, так что все норм) не слушай всяких цуштандов )
ахахах) спасибо за поддержку!)
Не любитель флюксов, но если выбирать между ними то zustand показался самым простым для использования на первый, поверхностный взгляд. Популярность мне кажется именно этим и обоснована. Но простое для вхождения не значит лучшее, особенно если в проекте есть хоть какая-то сложность. Пока присматриваюсь к mobx. Redux люто ненавижу
in addition to persist: you can store your values as url search/hash params and control store hidration
also I love this: useCallback(() => { const count = useStore().getState().count; }, []). And no need to have count in dependencies. Also .getState() allow you to use your state value outside components, for example in some helper functions
спасибо за познавательный видос!
После MobX Zustand не зашёл вообще. Очень многословен и нет нормальных компьютедов. Кажется, что когда (и если) в JS дотащат сигналы, такой подход будет более распространён.
ЦуштАнд…
Зустанд уже опередил редакс тулкит по скачиваниям в нпм
Не понял, почему он на хайпе? чем лучше мобх? Мобх кеширует компоненты , синтаксис использования удобный, кому надо есть автораны и прочие фишки . А в цуштанде что есть ?
Медведьштанд это редукс только проще в тыщу раз, без лишних сложностей. А т.к. вся индустрия использует и молится на редукс и функциональное программирование - по этому все и радуется что он такой простой по сравнению с редкусом. А сложный код никто не пишет как будто. Это мое мнение
В zustand можно подписаться на изменение состояния, аналогично как в реакции из mobx. Но большой плюс mobx - это, конечно, возможность напрямую мутировать состояние
Больше понравился reatom. Но zustand конечно ментально проще. Ну и плюс у zustand тянется схожая пачка минусов с селектора и и прочей ерундой
Цуштанд очень хорош, но мы используем preact-signals.
Тож думал юзать сигналы эти, но в итоге решил юзать mobx, т.к. там было то что искал в +- удобном и понятном виде
произносится как зуштанд
Тогда уж Цуштанд, коли по-немецки
Ходил на собеседование в нидерландскую компанию, они говорят зустанд, никаких проблем. У них немецкий родной, если что)
Немного смущает размазывание логики на множество независимых сторов. Не будет ли тяжело прокидывать preloadedState по множеству независимых сторов? Как реализовать взаимодействие/общение между этими сторами?
Если относится к сторам, как к хранилищам данных и не более. Тогда общения между ними никакого нет, 2 стора делают только get / state. А дальше это не сторов обязанность :)
@@it-sin9k , спасибо за ответ. Но мой поинт не в этом. Я про сложность использования множества независимых сторов. Ок, можно не хранить логику в сторе, превратив его в простой объект с единой задачей "get/set value" (правда, где тогда хранить логику, которая обычно лежит в санках/сагах). Остаётся prerender state. Я был немного в шоке от примера по интеграции с Next.js на официальном сайте с оборачиванием каждого стора в отдельных контекст. Плюс, не очень понятна логика селекторов, когда компоненту нужно вытащить данные из двух сторов. Можно взять пример из твоего видео по Event bus, где было необходимо останавливать запись голосового сообщения при звонке. В рамках Redux это решается довольно легко: выносим обе переменные в Redux и одним селектором достаем нужное компоненту "computed" значение `const allowRecording = useSelector((store) => store.voiceRecorder.isRecording && !store.callManager.hasCall)`. В таком случае количество сторов, которые поставляют условия может быть каким угодно, при этом количество перерендеров - минимальным. А с Zustand придётся вызывать useCallManagerStore и useVoiceRecorderStore, подписываясь на ненужные изменения.
Надо по-немецки произносить "Цуштанд". Так круче ;) Zustand переводится с немецкого как "состояние"
мы то знаем что лучшей стейт менеджер это $mol))))
... на палочке
zustand прост и асинхронен. Можно передавать кастомную ф-цию сравнения изменений. Но, как комбайнить, если много функционала в связанной фиче? Slices Pattern в доках не открывается
Болею за zustand, хоть в вакансиях его и не встречал (рб), не знаю даже, почему многие до сих пор сидят на redux, а еще и thunk и тд. и тп., а еще пишут "нет легаси", ну ну :), просто нет желания переписывать, вот и тянут. Bear is here!
Да мне кажется просто потому что это шаблон, а по шаблону проще. Всех кого спрашивал его не особо обожают)
как заходит дело дальше примеров для инкремента счетчика, так сразу начинается обмазывание колбэками и прочей лабудой... жаль. "неочевидных прокси оберток" - странно слышать от автора, который вроде как по js же контент пилит. даже интересно, что неочевидно в Proxy? "низкий порог вхождение" - это уже должно звучать как минус. Потом такие проекты после отряда джунов нереально поддерживать. "мобикс можно написать 10 способами" = "чтобы уметь пользоваться мобикс, надо книжки читать" = "высокий порог вхождение" - так то это плюс, код всяко лучше будет выглядеть, чем написанный теми, кому хватило примеров инкремента счетчиков. за контент спасибо!
Крайне сомнительная конструкция вами описана > "мобикс можно написать 10 способами" = "чтобы уметь пользоваться мобикс, надо книжки читать" = "высокий порог вхождение" Мы приходим на работу, чтобы решать бизнес задачи, а не учить инструменты. И завтра новый чел, должен вникнуть в твою кодовую базу и снова приносить value для компании. И вроде как низкий порог вхождения === экономия для бизнеса === однозначно плюс
@@it-sin9k Только вот, есть одно но. Низкий порог вхождения, чаще всего, равен низкой профессиональности. Программист с высокими проф навыками приносит больший Value, и его код не превратится во время поддержки в x10 по деньгам для бизнеса
@@it-sin9kэто база. Почему-то многие погроммисты забывают, что их задача код писать, который будет зарабатывать деньги. И желательно, чтоб другие макаки этот код понимали, от мала до велика.
Почему все так любят прибивать гвоздями к хукам, прям хукомания, потом сидишь и склеиваешь десяток хуков через какой-нибудь эффект, вместо нормальной композиции из функций.
там есть опция работы как с обычной функцией, хуки это не обязательно :)
Не ради холивара: в Redux есть важная фича - экшены. Если мне нужно по одному экшену в разных сторах, например нужно изменение состояния в модулях, при изменении данных в глобальном состоянии (и даже может быть наоборот, чего только бизнес не попросит), то я просто импортирую экшен, который уже передает пропсы нужные и вот я уже в зависимости от них строю логику. На долгом пути такой кейс ой как оказался полезен. В Mobx же для такого кейса придется связывать отдельные сторы посредством прослоек из хуков, либо изменять один стор внутри другого стора, ну или в самом компоненте, тут каждый сам себе художник (нет). Вот интересно как связать несколько сторов в Zustand путем написания одного экшена, при этом не исключая возможности использовать этот экшен в будущем и для других сторов уровнем выше\ниже или соседние, как это имеет Redux со своими сложными редукторами -_-
Верю, что победит