Size: a a a

2020 July 19

AO

Aleksandr Osipov in ☄️ effector
🅅aleriy 🄺obzar
внезапно вдруг и ниоткуда редко такие проблемы возникают
да ладно, неужели не бывало что заказчик "немного пересмотрел" концепцию и теперь вот нужно хитровывернутое взаимодействие между фитчами устроить?
источник

AO

Aleksandr Osipov in ☄️ effector
у меня такое каждую неделю 🙈
источник

🅅🄺

🅅aleriy 🄺obzar in ☄️ effector
Aleksandr Osipov
да ладно, неужели не бывало что заказчик "немного пересмотрел" концепцию и теперь вот нужно хитровывернутое взаимодействие между фитчами устроить?
насколько я понимаю в ангуляре народ с этим как то живет :)) проблемы думаю у всех плюс минус похожи
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Богдан
На мой взгляд все эти observable в стиле rxjs имеют фундаментальный недостаток - там происходит замыкание переменных к которым нет доступа к извне (кстати с redux-saga то же самое так как там состояние замыкается в генераторах которых нельзя клонировать и сохранить в локалсторадж например).
На первый взгяд кажется удобным когда с этим rxjs демонстрируют пример drag-and-drop когда взяли стрим кликов замапили на mousemove и т.д но потом когда приложение развивается и становится более связанным по фичам оказывается нужно в другой части приложения узнать происходит ли в текущий момент драг.
Без rxjs проблема решается просто - ставим обработчик на mousedown и обновляем переменную isDrag и теперь доступ к этой переменной можно получить в любой другой части приложения.
А с rxjs получается уже нужно как-то связывать эти два стрима вместе потому что состояние было замкнуто в этих стримах. И чем больше будем добавлять фич тем больше нужно будет соединять стримы по всему приложению вместо того чтобы работать с состоянием через переменные
следствие отсутствия состояний как концепции
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
я начал задумываться о сторах после того как в очередной раз всё пошло не так с методом scan, одним из самых характерных примеров создания неявного и недоступного состояния стримами
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Artem
спасибо за ответ! а как по-твоему лучше обрабатывать поступающую информацию?
Допустим, нужно получить данные (о пользователе). С одной стороны можно кинуть запрос средствами effect (хотя тогда, по-идее, вообще не нужен аполло и можно обойтись хоть нативным фетчем), с другой стороны - хуки от apollo. В первом случае нужно больше обработчиков (refetch, optimistic response при необходимости и т.д.). Во втором случае это из коробки, но втягивается бизнес-логика в компоненты.
я больше за явный контроль имплементаций и поэтому бы выбрал первый вариант

в частности в репле эффектора используется чистый graphql с эффектами
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
с apollo можно работать через асинк/авейт
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
а в идеале адаптер написать, который от запроса будет создаваться, выдавая наружу апи как у аполло-хуков для реакта
источник

🦜

🦜 in ☄️ effector
Paruyr🛸🪐🌏
а в идеале адаптер написать, который от запроса будет создаваться, выдавая наружу апи как у аполло-хуков для реакта
Только не как хуки
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
ну я в том смысле, что бы data, loading и тд было сторами + ручки для запуска запросов
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
вот бы кто библиотекой оформил...)
источник

🦜

🦜 in ☄️ effector
Ну только без аполло внутри
источник

DS

Dmitriy Shuleshov in ☄️ effector
🦜
Ну только без аполло внутри
почему нет?
источник

🦜

🦜 in ☄️ effector
Через gql-fetch, или просто fetch, или ky
источник

🦜

🦜 in ☄️ effector
Dmitriy Shuleshov
почему нет?
Не нужен
источник

DS

Dmitriy Shuleshov in ☄️ effector
🦜
Не нужен
Не слышу аргументов
источник

🦜

🦜 in ☄️ effector
Dmitriy Shuleshov
Не слышу аргументов
Какие за?
источник

DS

Dmitriy Shuleshov in ☄️ effector
🦜
Какие за?
Кеш батчинг
источник

🦜

🦜 in ☄️ effector
Dmitriy Shuleshov
Кеш батчинг
Кеш через браузер или заголовки запроса
источник

🦜

🦜 in ☄️ effector
Батчинг и так без аполло сделать можно
источник