Я не нашел в свое время нужного инструмента в свободном доступе. Вроде от adobe какой-то редактор для создания анимации имеет плагин, позволяющий сохранять созданные свг-анимации в нужный для лотти формат. Но это платно, я забил.
Алексей Ярков, Окей. Вот список основных порождающих паттернов(взят с сайта рефакторинг гуру);
-фабрика
-абстрактная фабрика
-строитель
-прототип
-одиночка(синглтон).
Как я прокачаю себя при их изучении (учитывая что в данный момент интересуюсь веб-разработкой). Фабрика - допустим, в комменте выше пример реального использования. А остальные? Ну еще принцип синглона может быть полезным. Можно также задаться вопросом и с поведенческими паттернами.
Я понимаю что код должен быть структурирован и подчиняться определенным правилам. И все это можно часто почерпнуть из доков используемого инструмента. Но вот эти основополагающие паттерны звучат как теоретическая теория.
Я попробую перефразировать - Вы их используете на практике? Осознанно, так чтобы ткнуть и сказать - вот это я сделал потому что (название паттерна)?
Мне в данный момент это напоминает урок географии, на котором нужно выучить столицы стран "просто потому что". Потому что на условном собеседовании могут задать вопрос.
P.S. - Ответ действительно крайне интересует. Не первый раз возвращаюсь к этому вопросу по ходу своего обучения.
VolgaVolga, WapSter, я вот к чему - понятно, что примеры использования любого паттерна можно найти в джаваскрипт. Но - по факту сейчас практически никто не пишет на нативном JS, пишут на фреймворках, на что ссылается WapSter. Сейчас для написания чистого кода не достаточно ли сосредоточиться на лучших практиках стека используемых технологий? Возьмем к примеру редакс. Он является воплощением поведенческого паттерна observer. Окей. Но какая вероятность того, что в реальном проекте я хлопну себя рукой по лбу и воскликну "о, да тут нужно писать по обсерверу"? И с каждым паттерном так. Насколько я сейчас вижу, знание паттернов - окей, для общего развития и только. Все остальное - изучение стека.
Да, наверняка знание/понимание паттернов может пригодиться для конструирования новых фреймворков/технологий, до чего рядовым разработчикам ооооочень далеко.
HitGirl, и здесь не происходит размонтирования. Размонтирование - это когда компонент убирается из dom-дерева. Ты же сейчас пытаешься отследить этап в жизненном цикле компонента.
HitGirl, в комменте выше сказали - потому что юзэффект вызывается дважды. Скорее всего в строгом режиме и компонент рендерится дважды, деталей не знаю, не вникал. Но суть в том что так как изменения ты вносишь в самом юзэффекте, то при первом рендеринге фалс, при втором - тру. Можешь отключить стрикт мод (в index.js в него обернут компонент app) и второй лог пропадет. В теории останется только false, так как изменение рефа не должно тригерить ререндер. Либо если ты в функции onInputChanged изменяешь какой-либо стейт, то двойная запись останется, потому что это затригерит ререндер дочернего компонента.
HitGirl, первое - насколько я знаю реф имеет смысл если использовать его с dom-элементами. Посмотри примеры.
Дальше- в чем смысл const deferredInput = useDeferredValue(searchInput)? ты пробуешь отсрочить отправку запроса при вводе? тогда посмотри как реализуется debounce. Так твой запрос будет отправлен через установленное тобой время после того, как пользователь завершит ввод.
И да, конечно проще настроить условия, при которых будет делаться запрос, чем добавлять несколько хуков и изобретать велосипед. Каждый хук это ведь тоже определенная работа и выполнение логики для реакта. Не умножай сущности короче без причины.