Как стать автором
Обновить

Комментарии 19

redux, saga, etc были очень полезны когда будущее React Context было неопределенно и тогда это казалось неплохим решением чтобы управлять глобальным состоянием. Это было улучшением тогдашнего Flux-a. Но после того как React Context API стабилизировался и появились хуки, Redux потерял свою предыдущую актуальность.

В связи с этим у меня вопрос, в чем целесообразность использования Redux в наше время и зачем его применять в связке со Svelte? Ведь плюсы Redux-а в one-way-data-flow а сила Svelte в 2-way-binding.

Redux не совсем про x-way-binding, это стейт

Redux это не про реактивность. Это стейт мэнэджер с возможными сайд эффектами по типу саги. А реактивность организована ещё и в сторе свелт, где мы обновляем его при изменении в сторе редакса через subscription

Редакс можно интегрировать с тулами, управляющими сайдэффектами (с помощью мидлварь). Но в самом редаксе этого нет — он весь исключительно чистый и синхронный.

По-этому и говорю «с возможными сайд эффектами»))

Redux хорошо подходит тем фреймеркам (как правило) где нет хорошей поддержки к 2 way data binding, чем являлся React в его начальном виде. Когда же есть хорошая поддержка 2 way binding (тем более когда сам фрейморк себя позиционирует именно в этом (Svelte)) то там больше подойдет что-то вроде MVVM, нежели Redux.

Вообще говоря, редакс не имеет отношения к классическому 2wb потому, что они с самого начала позиционировали себя как альтернативу этому безобразию. Тут данные могут ходить только в одном направлении.


Когда одни и те же данные могут приходить из разных источников, в распределенной системе (независимые компоненты на странице обладают большинством признаков такой модели) у читателей обычно наступает шизофрения — в один и тот же момент времени каждый может видеть что-то своё. Редакс предоставляет элегантный механизм для синхронизации, что даёт возможность читателям работать с ним, как единственным источником правды.


Основная проблема редакса в том, что разработчики назвали словом Action то, что должно называться Event (про это есть ишью на гитхабе, но менять уже было поздно). Поэтому народ, приученный к MVC и разным MVVM, пытается городить к нему какие-то невероятные кастыли для 2wb, вместо того чтобы пользоваться всеми преимуществами Event Sourcing и CQRS.

Redux можно рассматривать как винегрет из разных паттернов: Event Sourcing, CQRS, Single source of truth и даже подобие Dependency injection вместе с AOP. Довольно мощная штука, хоть и страшная как атомная война из-за странного нейминга и отсутствия консистентности в тулах.

это не симметрия, а наркомания какая-то xDD
// написали writable store для useDispatch, хотя можно было и без этого
// но для симметрии использования оставил так
export const useDispatch = writable(() => store.dispatch)


вот код здорового человека
export const dispatch = store.dispatch;

Приятного упарывания в мои наркотики :)))

Притащить эту ущербность в Svelte да ещё и статью об этом написать, тяжелый случай однако.

Ущербным я могу считать свой код, искренне зная, что там могут быть изъяны, а выражать такое мнение о технологии, которая давно принята сообществом и пользуется успехом — это действительно тяжёлый случай.

Она была «принята» давно, на заре React'a, а сейчас она умерла. Давным давно эту помойку заменил MobX. Более того успехом она не пользуется, разве что только у тех, кто до сих пор живёт в 2015 году или любит боль и страдания.

Хорошо. Завези MobX в свелт, напиши об этом статью, сбацай нпм пакет. Я уверен на вскидку конструкция будет афигенно большая с лишними инициализаторами. Я же могу использовать редакс или редакс тулкит с текущим кодом и будет более лаконичный слайс, который мне выдаст редюсер и экшены одновременно без огромной каши в коде

А если использовать эффектор, то кода станет еще в два раза меньше и он станет выразительнее

Я бы не скрещивал бегемота с кашалотом. Svelte-у не нужен ни MobX ни Redux. Потратьте время и заберитесь с технологией.

Да, я тоже что-то боюсь захейтить автора. Человек все же старался, но как человек написавший не мало уже на svelte, тоже не понял для чего эти все извращения и зачем здесь вообще аналогия redux, если можно было использовать чисто svelt и ничего больше. Но видимо автор знает тайный смысл в таких извращениях.

В общем-то, я одно могу сказать, что это всего лишь эксперимент, который имеет место быть. Нравится или нет? Да не важно. Появилась возможность пощупать это, оценить трудоемкость или простоту использования. Для меня это был просто эксперимент и я им поделился :) Нет никаких попыток выдвинуть это в массы и сказать — «Это лучшее, что могло произойти со свелт и редакс». Нет, всё просто: потыкать, поресерчить и поделиться с другими. А как вы воспользуетесь полученной информацией — это уже ваше дело :)
который имеет место быть

Да с чего вдруг то оно имеет место быть в контексте Svelte? Оно вообще ни каким боком тут не вперлось, это чистейшая ересь. У Svelte есть все для управления состоянием, и это всё намного лучше чем то, что дает Redux. Тем более сюда зачем это публиковать, вдруг кто-то ещё решит притащить Redux в Svelte после прочтения, это же будет вешалка для тех, кому это «детище» потом достанется. И так в мире фронта кол-во извращенцев достаточно высоко, зачем подначивать неопределившихся в эту степь.
Да и вообще товарищи извращенцы — ливайте из профессии пожалуйста =)

А как вы воспользуетесь полученной информацией — это уже ваше дело :)

В том то и проблема, что даже сегодня есть люди которые всё ещё берут Redux в связку с React'ом, что разумеется полный маразм, но всё же. Хотя полно информации и альтернатив, которые на голову выше.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории