22.06.2021, 21:30
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
[React.js] Разные варианты хранилищ...
Когда начал читать и пробовать React.js, меня удивило количество всяких наворотов вокруг хранения, изменения и чтения состояния в приложениях...
Но ни одни навороты, на мой взгляд, никак не облегчают разработку ПО. Куча импортов... Функций...
Роутинг можно оставить, он не особо усложняет дело, благо с histiry вроде разобрались.
Пока вместо разного рода редьюсеров и т.п. наворотов, начал использовать обычные события. Их можно "синтезировать" в любом месте, любой функции. А слушателю доступно хранилище и он может его менять.
Добавим еще использование хуков и вроде все и так реализуемо.
Остается только получить данные из пропсов и все дела.
Или есть таки какой-то профит во всех этих наворотах?
Поделитесь опытом в разработке на React.js, может пригодится не только мне но и кому-то еще...
|
|
23.06.2021, 12:09
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
Вот казалось бы, реакт тупо рендерер, и ничего проще чем ) document.getElementById('').append() - но тем не менее он весит аж 200кб, вывод: что-то не все просто.
Для тех, кто не очень в курсе:
https://pomb.us/build-your-own-react/
-
Насчет state management, есть глобальный стейт и локальный, (выяснил эмпирическим путем), с реактом дружу с 12 версии, поэтому я попробовал практически все что было
Redux - нормальное решение, можно его брать, существует давно, дев.тим постоянно что-то улучшает... сейчас уже есть RTK (redux toolkit). Простая установка. Подходит для глобального стэйта... были у меня как-то вопросы, те же дев.тим бодро в дискорде отвечали, от них же было утверждение, что для локального стэйта можно использовать Context, и useState... это пожалуй самый большой облом. Хотелось бы all-in-one. Порог вхождения - средний, в том плане, что нужно хорошо понимать javascript. Недавно вышел RTKQ (redux toolkit query) - интересно.
Apollo - это пожалуй самый приближенный вариант ) как должно быть... я про cache & invalidate, reactive vars, optimistic update, etc...
MobX - подкупает своей простотой... не прижился. Нет транспортного слоя, это про аналог RTKQ.
Recoil - пишут что официальная команда делает систему хранилища. Покрутил, повертел ну пока хз.
Context - слишком много ручной работы.
Все оно примерно одно и тоже, но только по другому. Что не возьми будут свои подводные камни и не так как хотелось бы )...
-
Насчет профита, ну прокачаешь свой скилл в понимании концепций, будешь легко разбираться в новых штуках. Программы сами не напишутся в какой-то момент понимаешь какой ты упоротый упырь, все знаешь, все понимаешь ) а живешь как бомжара... Надо было на манагера ) учиться... рукой водить, получать больше, в xsl ) галочки ставить... а не бороться со всякими IE6, es100500..
Не учись на программистов ) это сделает вас несчастными )
--
На счет событий + стор + хук = здесь есть один жирный недостаток, не получится сделать SSR ) без headless browsers
Последний раз редактировалось SuperZen, 23.06.2021 в 12:15.
|
|
23.06.2021, 14:47
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от SuperZen
|
Надо было на манагера ) учиться... рукой водить, получать больше, в xsl ) галочки ставить... а не бороться со всякими IE6, es100500..
|
Тут на все 100% правильно!
Сообщение от SuperZen
|
Redux - нормальное решение, можно его брать, существует давно, дев.тим постоянно что-то улучшает...
|
Вот его и рассматривал более подробно.
Но пока не нашел ничего в нем "улучшающего" в сравнении с "моим" подходом через события.
Они пропсы не тянут до элемента, зато оберток накручивают будь здоров!
В моем случае ничего крутить не нужно, но пропсы прокидывать до конечного элемента придется.
Даже рассказать новичкам или другим не особо "продвинутым" сотрудникам, как работает тот или иной вариант достаточно проблематично.
С "моим" вариантом таких сложностей нет. Отследить пропсы по цепочке не сложно...
|
|
23.06.2021, 14:47
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от SuperZen
|
На счет событий + стор + хук = здесь есть один жирный недостаток, не получится сделать SSR ) без headless browsers
|
Сейчас почитаю про это...
|
|
23.06.2021, 14:52
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
SuperZen, ты про вот это?
Что такое [B]SSR[/B]. [B]SSR [/B]– (анг. аббревиатура от Server Side Rendering) это технология, которая позволяет, с помощью Node.js, запускать JavaScript код на сервере (а не в браузере как обычно) и готовый результат отправлять пользователю, избегая лишней нагрузки на его браузер и компьютер.
Так у меня все элементы рендарятся согласно стейту... Т.е. и тут я смогу все свои страницы запустить на Node.js и получить хтмл (согласно переданным пропсам).
Ведь мои события обеспечивают только "динамику" на самом сайте. А статику создать вообще нет проблем.
Т.ч. про это я думал... Но пока не использовал.
|
|
24.06.2021, 09:45
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
Сообщение от SuperZen
|
MobX - подкупает своей простотой... не прижился. Нет транспортного слоя
|
MobX - это просто библиотека реактивности. Соответственно может использоваться как стейт-манагер. Со своими задачами справляется шикарно, позволяет хорошо декомпозировать код, а благодаря точечности обновлений - хорошая оптимизация в Реакте.
Транспортный слой не является задачей стейт-манагера (последний, кстати, работает не только с серверными данными), в общем, это разные штуки.
В общем, я бы порекомендовал именно MobX
|
|
24.06.2021, 10:00
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
MobX - это плохой vue/reactivity.(ну точнее наоборот, vue/reactivity - это MobX сделаный нормально)
То что вместо массивов юзается какая-то херня, которая требует плясок - это для меня абсолютный диал брикер.
Плюс когда я поизучал как склеивается MobX с, собственно, React, у меня в очередной раз заполыхал зад. React он, конечно, not opinionated, но и расширить его на самом деле нельзя. MobX туда засунут чисто через костыли.
Такой банальной, казалось бы, вещи как использование props совместно с computed для динамического локального состояния тоже получить невозможно без двойного рендера и кучи оверхеда.
А redux - это тупо надуманное решение надуманных проблем. Сами себе создали сложности, и сами героически оные решают, накручивая вся больше и больше мусора.
__________________
29375, 35
Последний раз редактировалось Aetae, 24.06.2021 в 10:02.
|
|
24.06.2021, 10:09
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Aetae
|
А redux - это тупо надуманное решение надуманных проблем. Сами себе создали сложности, и сами героически оные решают, накручивая вся больше и больше мусора.
|
Я соглашусь с этим. Поскольку не понял зачем они все так наворачивают и в чем от такого получают преимущество...
|
|
24.06.2021, 10:28
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
Сообщение от Aetae
|
MobX - это плохой vue/reactivity.(ну точнее наоборот, vue/reactivity - это MobX сделаный нормально)
То что вместо массивов юзается какая-то херня, которая требует плясок - это для меня абсолютный диал брикер.
|
какие там засады с массивом?
я знаю только одну - когда делаешь arr[i] = someValue, триггерятся подписчики на все элементы. Ну то есть использовать массив с примитивами или иммутабельными объектами - не очень.
Сообщение от Aetae
|
Плюс когда я поизучал как склеивается MobX с, собственно, React, у меня в очередной раз заполыхал зад. React он, конечно, not opinionated, но и расширить его на самом деле нельзя. MobX туда засунут чисто через костыли.
|
тут как хочешь склеивать, так и склеивается. Можно закинуть сторы в контекст и доставать их оттуда
const myStore = useMyStore()
потом этот myStore юзать или передавать в дочерние компоненты.
MobX - лишь механизм, не более того.
Сообщение от Aetae
|
Такой банальной, казалось бы, вещи как использование props совместно с computed для динамического локального состояния тоже получить невозможно без двойного рендера и кучи оверхеда.
|
можно пример?
|
|
24.06.2021, 11:38
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
Сообщение от ksa
|
Поскольку не понял зачем они все так наворачивают и в чем от такого получают преимущество...
|
ФП-шники любят такие конструкции ))
|
|
|
|