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

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

Скажите сразу — как вам пришло в голову такое название? Это, конечно, не Dynamic PSP, но ведь без тупых шутеек не обошлось?
да я сидел, думал, как назвать, жонглировал основными частями архитектуры и как-то буквы сложились в такое хайповое название. Мне показалось оно с одной стороны забавное, с другой стороны реально описывающее действительность. Поэтому решил оставить
Для меня как фронтэндера всё это выглядит как «надо же, до кого-то дошло, что можно не писать switch(action.type), а создавать инстансы действий, которые сами знают, что им нужно делать». Что, вообще-то говоря, лежит на поверхности, когда у вас нет установки «делаем всё строго так, как завещал великий редакс».
Можно немного подробнее, про идею создания инстансов действий, которые сами знают, что им нужно делать
Минутка занудства — на первой картинке у вас на ленте транспортёра были квадраты, а теперь кругляши, не самая лучшая идея.
Если вы еще раз посмотрите на картинку, то можете заметить такой объект, как Store. Store хранит в себе Reducer’ы.

Store не хранит редьюсеры — это объект с несколькими основными функциями: dispatch, getState, subscribe, через которые осуществляется взаимодействие с состоянием и оповещение о его изменении. Редьюсеры — функции, которые определяют правила обработки веток стейта.

Короче говоря, Reducer знает, как декомпозированно обновлять экран/view.


Редьюсер вообще ничего не знает про то, как обновлять экран/view. Более того — сам Redux об этом ничего не знает. Это библиотека, предоставляющая инструменты для работы со стейтом и она не завязана ни с чем.

Я пытался объяснить по-простому и упрощая некоторые вещи. Твои замечания верны, но такое описание сложно понять, если ты не фронтендер со стажем. В нашем, андроидном, мире всё немного по другому. Поэтому я и написал так, чтобы понятно было тем, кто никогда не видел и не слышал что такое Redux


Редьюсеры — функции, которые определяют правила обработки веток стейта

Там в начале, перед первой главой, есть эпиграф, который говорит, стейт задаёт то, что видит пользователь. Поэтому, когда я говорю, что редьюсер знает как обновить экран, я имею в виду, что он знает как обновить стейт, от которого зависит экран

«Проблематика» перед первой главой написана правильно, согласен. Однако, нижеследующие упрощения будут крайне вредны для новичков. Согласитесь, что «обновление экрана» и «обновление состояния» — не одно и тоже, и даже не аналогия.

Ведь чтобы обновить компоненты страницы, необходимо связать данные и представление. Это не задача redux. Если view-слой приложения написан на React, то связывание скорее всего будет осуществляться через hoc-коннектор react-redux (+ опционально reselect), для Vue — Vuex и т.д.

Я надеюсь мы поняли друг друга ;)
НЛО прилетело и опубликовало эту надпись здесь

Выглядит интересно. Только не понял, где у вас стейт хранится? Допустим хочу на новый экран передать текущий выделенный элемент, где он хранится в рамках фичи?

По стейту вопрос я предусмотрел и ответил в конце статьи в "Вопросы и ответы".
Не очень понял как стейт связан с передачей объекта на следующий экран. Передать объект можно любым способом удобным вам: через интент/аргументы, через синглтон, через компонент даггера, который живёт для этих двух экранов, через базу данных и какой-то ключ экрана. Варианты зависят от потребностей и размера передаваемых данных.

Я не имел в виду сохранение стейта в onSaveInstanceState. Например вы из сети сущность загрузили и работаете с ней в рамках экрана. Где она хранится у вас? В обычном MVI есть объект State, в MVVM это может быть какая то lateinit проперти.

а, понял.
У нас на проекте данных хранятся в объекте, который закрыт интерфейсом(LocalDataSource), за которым может быть как работа с базой, так и мапа в памяти просто. Допустим мы открыли список проектов. Нам пришла модель от бэка, где есть всё, что нам нужно для отображения. Мы её как-то обработали и передали в ScreenNameLocalDataSource. Дальше подписались на изменения этих данных в ActionCreator через соответсвующий интерактор и обновляем экран на основании этих данных.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий