Привет, очередной вопрос по архитектуре Compose приложений. Читаю https://developer.android.com/jetpack/guide/ui-layer/events Как понял

для представления состояния UI рекомендуется использовать специальные классы по типу
data class LoginUiState(
val isLoading: Boolean = false,
val errorMessage: String? = null,
val isUserLoggedIn: Boolean = false
)
описывающие целиком (если я правильно понял) состояние экрана.
Что-то изменилось, делаешь uiState = uiState.copy(newsItems = newsItems).
То есть целиком меняешь состояние.

Вопрос тем, кто это юзал. Это вообще удобно?
Почему нельзя просто хранить данные как mutableStateOf<T> поля во viewModel по отдельности, не оборачивая из в такой спец. класс ?

4 ответов

14 просмотров

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

можно и так и так, но наличие единого иммутабельного стейта это офигенно удобно.

Aleksandr-Petrov Автор вопроса
Dmitry
Ну вообще зависит от задачи, если у тебя несколько...

по идее эти ифы все равно придется где-то написать, даже если есть UiState класс, в конечном счете надо будет его заполнить (уже после все ифов)

Похожие вопросы

Обсуждают сегодня

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Что за японодичь? Мне хоть m68k, хоть 8080, 8088, на любом можно что-то создать
Егор
5
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
и да, кто сказал что у эпла именно такой isa?
Boris Vinogradov
5
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Карта сайта