Size: a a a

2018 November 30

UH

Untamed Horse in RxPM
Короче говоря, RxPM никак не мешает реализовывать принцип MVI  с его реактивным циклом. Наоборот, помогает. Например, тем, что в RxPM есть Command. Дорфман в своих статьях про MVI говорит, что команды нужно через стейт пробрасывать, что очень неприятно.
источник

UH

Untamed Horse in RxPM
И мне тоже кажется странным, что RxPM так не популярна. Но я думаю, это связано с тем, что люди боятся использовать RxJava и недооценивают ее потенциала + популярность MVP. Хотя presentation-слой чуть ли не самая реактивная часть большинства приложений.
источник

UH

Untamed Horse in RxPM
Самая реактивная именно с естественной точки зрения, а не в смысле того, что чаще всего так и реализуют.
источник

DG

Dmitriy Gorbunov in RxPM
Untamed Horse
Ещё есть реализация MVI в библиотеке Mosby от Дорфмана, но я в нее особо не заглядывал. Зато статьи про MVI у него заразительные. Собственно, с них я и начал копать такой подход.
Дорфман в своих статьях всех запутал, смешал ViewState с понятием Модели
источник

DG

Dmitriy Gorbunov in RxPM
Untamed Horse
И мне тоже кажется странным, что RxPM так не популярна. Но я думаю, это связано с тем, что люди боятся использовать RxJava и недооценивают ее потенциала + популярность MVP. Хотя presentation-слой чуть ли не самая реактивная часть большинства приложений.
У Жени Вортана есть классная презентация про реактивный стейт на эту тему https://youtu.be/0IKHxjkgop4
источник

UH

Untamed Horse in RxPM
Да, смотрел, очень классная :) Вот блюпринт тот прям очевидно, что этой презентацией навеян.
источник

DG

Dmitriy Gorbunov in RxPM
Untamed Horse
Да, по сути именно так и реализуется основная идея MVI. В идеале ещё нужно иметь тип для внутренних ивентов, которые непосредственно меняют стейт в редюсере. А ещё, когда я пробовал такой подход с RxPM, я оставлял несколько экшенов для разных интентов, просто от каждого экшена была своя цепочка превращений во внутренние ивенты, на которые подписывался один и тот же реле, который потом scan-ом меняет стейт через редюсер.
Спасибо за фидбек.
Я пока не вижу большого профита, в RxPM есть много экшенов, от них идут цепочки, которые в конце биндятся в стейты. Цепочка по сути - это редьюсер с сайд эффектами. ViewState-ом по сути является PresentationModel, только она мутабельная. Неконсистентность стейта? Похоже что можно решить путем синхронизации изменения стейта в одном потоке.  Вообщем выгода пока неочевидна, если количество кода возрастет. Но нужно похоже пробовать на реальном проекте, чтобы сформировать опытное мнение.
источник

UH

Untamed Horse in RxPM
С MVI экран становится явной машиной состояний, которую легко проектировать и потом читать код. Она предсказуемая и легко поддается отладке (вот этот весь time travel debugging, который часто упоминают в контексте MVI). Мне понравилось, что с MVI всегда есть четкая инфраструктура и больше... Наглядности что ли. С экшенами и разными стейтами,  которые надо синхронизировать, у меня иногда получалось что-то более запутанное. Тот же combineLatest, например, штука классная, но чтобы он сработал, каждый поток должен что-то прислать, но иногда не получается придумать какое-то адекватное начальное значение для одного из них.
источник

DG

Dmitriy Gorbunov in RxPM
Untamed Horse
С MVI экран становится явной машиной состояний, которую легко проектировать и потом читать код. Она предсказуемая и легко поддается отладке (вот этот весь time travel debugging, который часто упоминают в контексте MVI). Мне понравилось, что с MVI всегда есть четкая инфраструктура и больше... Наглядности что ли. С экшенами и разными стейтами,  которые надо синхронизировать, у меня иногда получалось что-то более запутанное. Тот же combineLatest, например, штука классная, но чтобы он сработал, каждый поток должен что-то прислать, но иногда не получается придумать какое-то адекватное начальное значение для одного из них.
Если нужно подписаться на два репозитория и скомбайнить данные? Будешь делать два экшена и два стейта данных внутри вьюстейта?
источник

UH

Untamed Horse in RxPM
Не, в таком случае, конечно, можно напрямую комбайнить потоки из репозитория в стейт. Я говорю именно о событиях, которые приходят извне. Действия пользователя и сообщения, которые могут прилетать из model-слоя, когда там живёт какая-то большая и страшная бизнес-логика.
источник

MZ

Mikhail Zisman in RxPM
Доброе утро всем, а можете примерно описать +/- этого фреймворка (RxPM) и MvRx (https://github.com/airbnb/MvRx).
источник

L

Leo in RxPM
Dmitriy Gorbunov
А вынести в отдельный интерфейс виндеры и применять его к базовому фрагменту не вариант? В либе так и сделано, все биндеры в интерфейсе AndroidPmView
Тоже сначала так сделал, а потом подумал, что с ростом количества контролов будет неприятно распухать базовый фрагмент...
источник
2018 December 08

L

Leo in RxPM
Всем привет! Продолжая тему выше: подскажите пожалуйста, как вы поступаете в ситуации, когда внутри RecyclerView/ViewPager/Еще-что-нибудь должны находиться всякие инпуты? Как их забиндить к InputControl или CheckControl, скажем?
источник
2018 December 11

L

Leo in RxPM
И вдогонку: как правильно биндить/анбиндить вьюшки, когда UI создается динамически?
источник

DG

Dmitriy Gorbunov in RxPM
@leonid_z хорошие вопросы задаете)
источник

L

Leo in RxPM
Я уже неделю не сплю
источник

L

Leo in RxPM
Покоя не дает(
источник

L

Leo in RxPM
Думал, может по пути databinding'а пойти, подписываться там на всякие attach/detach у вьюшек
источник

DG

Dmitriy Gorbunov in RxPM
Leo
И вдогонку: как правильно биндить/анбиндить вьюшки, когда UI создается динамически?
UI меняется в процессе, то есть должны ли чайлды умирать раньше парента?
источник

L

Leo in RxPM
Да, скажем, какой-нибудь хитрый viewpager
источник