сервисы? я например использую redux и все запросы к апи пишу в экшенах, это нормальный подход? а как вы делаете?
Экшен объект в нем ничего нельзя писать)
если точнее, то в thunk
в action creator
Будешь рефакторить - будет тяжко)
а ты как делаешь?
redux saga 😍
я думал этот подход устарел ещё в 2017 🤔
В отдельные сервисы, каждый сервис - класс, который наследует общий класс с настроенным axios instance, каждый метод сервиса - отдельный запрос на апи. Ну и дальше можно вызывать их с помощью thunk, например
а у тебя какой подход?
Тоесть на thunk не стоит тратить время?
Скорее всего сага
нормальный подход thunk, не надо слушать кого попало
а какой тут профит от классов?
думаю, чисто вкусовщина. можно кучку функций экспортировать
В сравнении с импортом функций - вкусовщина, можно и испортить инстанс в каждую функцию
это неидиоматично. сложно отличить санки от нормальных экшенов - увеличивается энтропия и снижается чистота кода + сложности с обработкой ошибок
энтропия - это субъективно а что с обработкой ошибок?
Из санок можно asyncCreator сделать, тогда вполне отличить можно)
энтропия вполне себе измерима и объективна если неправильно обработать промис внутри thunk, можно ловить ошибки из рендера, что вообще не является очевидным 😅 с использованием саг стрелять себе в ногу куда сложнее, кроме того они полезны и сами по себе, а не только для работы в связке с редаксом
возможно, возможно. я бы однако все равно не сказал бы, что санки - 2017 и их больше не используют. используют еще как
а что скажешь по поводу mobx? лучше редакс + сага или мобх?
ничего не могу сказать, я с ним не работал, не очень люблю императивный подход 😅
а вот на хабре под любым топиком с разбором редакса пишут выкинуть редакс и использовать мобх и будет тебе счастье
не будет. говнокод не зависит от используемого store engine
а растущая сложность разработки оченб даже зависит
Там есть такая секта да
великая сила влечет за собой великую ответственность) редакс напрямую не привносит дополнительных сложностей пиши чистые и минималистичные коннекты, ликвидруй бойлерплейт засчет хэлперов и фабрик редьюсеров - и будет тебе счастье. с мобх много неявного и плохо контролируеммого -> говнокодить проще)
редакс максимально не гибкий шаг не туда и все и проблемы имеет всем известные (или нет) я не пишу ни на том ни на том благо есть выбор
Не могу понять почему продолжают так упорно сравнивать эти два максимально примитивных стейт менеджера) 2021 год уже, сколько можно, уже все должны были вдоль и поперек все перепробовать
а ты что предпочитаешь?
правильно, пора бы уже выбрать эффектор и забыть про срач)
потому что написал говна и легаси и в цеились без возможности переписать пишут плачут и впрягаются
Как минимум перестать спорить)
вот да после него и не хочется писать на другом после возможности комбинировать свзяи как угодно + не ломать переписывая логику
Я предпочитаю хорошо покушать
есть одна штука с легаси и редаксом - на редакс можно накрутить почти что угодно, а вот в том, насколько это просто сделать с мобх я сомневаюсь)
Эффектор кстати родился из миддлвары redux most )
Я вот кстати недавно похожим вопросом задавался Типо какой стейт менеджер взять в стек, чтобы было не заебно работать с ним и поддерживать потом Остановился всё-таки на редаксе, потому что его комьюнити заездило просто до дыр. Очень очково будет если в каком-нибудь эффекторе не окажется какой-то нужной привычной херни, я уже и не говорю про остальные стейт менеджеры И в 2021 их развелось так много, я только на память могу сказать штук 5-6 Выбор между всякими jotai, recoil и прочими видится как выбор между сортами говна Хотелось бы какой-то готовый ответ видеть, типо «бери это и не парься, всё будет збс»
Не совсем понятно как чего то может не оказаться в эффекторе, если в редаксе вообще нихрена нет, вся экосистема тыща мидллвар для работы с асинхроном и утилиты для минимизации бойлерплейта
На счет экосистемы редакса согласен, да, просто гора разных миддлварей пытающихся решить одну и ту же проблему Но в целом мне кажется что у редакса все основные сущности для управления стором вполне неплохо определены, хоть и код говно получается И всё-таки, какой стейт менеджер считать дефолтным в 2021? Ну типо чтоб вот брать и не париться? (Спрашиваю потому что уже поменьше слежу за этим зоопарком, ибо требует усилий и времени)
Effector или Redux Toolkit
для начала ответь себе на вопрос для чего тебе нужен стейт менеджер и если ответ окажется на 80% для того чтоб хендлить асинхронные данные с сервера - смотри на react-query / SWR другие фетчилки с кешем и ручками для управления кешем
Ух ты, спасибо На самом деле у меня стейт менеджер юзается для того чтобы данные разросшегося приложения подключать в самых разных местах этого самого приложения Ну и без адекватной обработки асинхронщины никуда конечно Про react-query слышал, да. Он актуален еще? Про swr впервые слышу
Effector отлично работает с простыми и сложными приложениями
Все эти либы херня)
в вашу секту не вступлю, спасибо
"эффектор херня") Пруфов так же не будет))
А что за «фетчилки с кешем»? Что имелось ввиду, не понял?
актуален, версии выходят реакт квери нравится, https://swr.vercel.app/ аналог не не пользовался
ну полистай доку https://react-query.tanstack.com/
Вот подобные ответы и заставляют задумываться каждый раз Но походу надо реально в сторону эффектора смотреть
это не стейт менеджеры, это кешилки для сетевых ответов, по идеологии работы похоже на гкл клиенты которые хранят свой кеш для сетевых ответов, но более генерализованно для любых данных
А зачем вообще кешировать те же промисы? Ну просто это же практически всегда XHR-запросы, то есть ajax Ну то есть какие-то динамические данные полученные с бэка например, а не статика
Это мнение какие пруфы? Сто раз уже приводил аргументы и не я один, теперь уже лень. А ты врядли найдешь аргументы про свое утверждение)
очень долго обьяснять, посмотри плс примеры в документации если совсем в пяти словах в useQuery передается какая то асинк функция (аксиос, фетч, что угодно), и строковой ключ Хук ее вызывает, ответ отправляет в свой кеш по ключу. На следуйщий вызов хука он достанет данные из кеша и не пойдет в сеть
Я и не собираюсь ничего искать, это такой же пример "выброса". В основном все аргументы - список абстрактных сферических коней в вакууме Зато безапеляционных вбросов - полно вообще) У этих либ есть недостатки, но и преимуществ вагон
Так это как раз понятно, не понятно только зачем кэшировать эти данные если они (почти) всегда разные будут
у тебя может быть несколько вызово хука в разных частях приложения
Что бы каждый рендер не запрашивать
Но недостатки фундаментальные так сказать) и работают они хорошо в строго в ограниченных кейсах. Так что называть их альтернативой стейт менеджеру неправильно
Я и не называл Я не согласен, что они херня
Ну так читай тред весь
Но ведь это странно, потому что данные (особенно полученные по сети) могли обновиться даже между ререндерами
Да просто попробуй блин) понятнее будет чем тебе тут объяснять будут
оно не на столько влоб работает, там есть и время жизни кеша, и ручки для ручной инвалидации
И что?) Если нет работы с данными в реальном времени, они могли обновиться когда угодно и вы об этом узнаете только когда спросите
Окай-окай, всё равно спасибо)
Ааааааа, походу я понял, этот кэш только в рамках одной загрузки страницы работает, верно? То есть если страницу перезагрузить, то все хуки с получением данных как обычно заново прогонятся?
Там сложная система с инвалидацией и обновлениями
Обсуждают сегодня