Jetpack Compose. Side Effects. Как управлять логикой в Compose? [Ru, Kotlin\Android]

preview_player
Показать описание
IT как новый космос: этой теме будет посвящена конференция YaTalks которая пройдёт 3-4 декабря в онлайн-формате. Участие доступно бесплатно для всех желающих.

Переходи и регистрируйся - будет интересно!

Всем привет, сегодня мы продолжим разбирать Jetpack Compose и сегодня мы доберемся до side effects. Side Effects помогают запускать корутины, управлять логикой в Compose и делать сложные композиционные штуки.

Если видео вам было полезно, пожалуйста, поделитесь им с друзьями

Тайм-коды:
00:00:00 - Вступление
00:01:29 — Вводная часть
00:12:01 — LaunchedEffect
00:29:26 — DisposableEffect
00:36:17 — SideEffect
00:38:45 — ProducedState
00:42:39 — DerivedState
00:49:47 — SnapshotFlow
00:51:39 — Заключительная часть

Ссылка на репозиторий:

Напоминаю, что видео вначале выходят для моих патронов и спонсоров. Стать им можно по ссылке ниже
===========================================
Подписаться на boosty
Стать Патроном канала и получить доступ к уникальному материалу
===========================================

Полезные статьи из мира мобильной разработки

Мобильный разработчик в других соц. сетях
=======================
=======================

Ставь лайк и расскажи друзьям, чтобы они тоже попробовали эту технологию
Рекомендации по теме
Комментарии
Автор

Уважаeмый, Вы путаете side effects и effect handlers. LaunchedEffect - это функция effect handler, которая работает с сайд эфектами которые возникают на запуске композэбл.

СергейБезногов-ту
Автор

Спасибо за видео. Интересна задумка отказа от view model

NickTitovDev
Автор

Спасибо за видео. Чем больше будет таких видео, тем быстрее будет продвигаться композ в командах)
Не согласен с тем что просто можно просто взять и как в первой части видео использовать rememberCoroutineScope и остальные сайд эффекты, и этим избавится от вью модели. Вью модель в первую очередь была создана гуглом для пережития изменения конфигураций. При пересоздании активити ввиду изменения конфигурации текущий композишн диспозится и например при повороте экрана все эти эффекты вызовутся заново. Тот же LaunchedEffect вне зависимости от ключа при изменении конфигурации просто вызовет лямбду внутри. При уходе с экрана и попадании его в бекстек только saveable состояние сохранится, кроме того все корутины запущенные с помощью coroutine scope созданного с помощью rememberCoroutineScope будут отменены. Написание бизнес логики в композабл функции в целом только добавляет сложности, слишком много граблей на которые можно наступить не учитывая работу композа. При этом тестировать эту бизнес логику сложнее. Мое личное мнение: Все сайд эффекты и корутин скоупы нужно использовать только для поддержки ui дерева, анимаций и отправки в бизнес логику событий при наступлении какого-то состояния ui или создания простеньких ui элементов, которые могут изменять свое состояние только пока они находятся на экране.
Для экранов же необходим объект бизнес логики, который может жить вне рамок композиции, а в рамках нахождения экрана в бекстеке.

АлександрЯцук-чы
Автор

Вот вам derivedStateOf, но хз что он делает и зачем нужен. Лол) А так хорошее видео, спасибо.

holoceo
Автор

небольшая поправка - сайд эффекты это проблемы, возникающие в компоуз среде при использовании обычного кода(объявлении переменных, корутин скоупа и прочего). А вот эффект хэндлеры призваны решить эти проблемы

karamba
Автор

К 17-ой минуте полностью потерял нить повествования. Я всё понимаю, мысли разные могут приходить, когда всё с одного дубля записывается. Но какая-то последовательность изложения материала должна быть?

antaki
Автор

Молекула, судя по всему, это чисто функциональный MVI. Интересный подход. Все больше замечаю ситуации в Kotlin, когда какая-то логика, состояние умещается в объекте, и класс с внутренними свойствами вообще не нужен. Как раз тот самый случай, когда все можно вынести в простые функции модуля, без лишних оборачиваний в объекты, и все зависимости передавать как аргументы. Для Ktor, к примеру, уже есть функциональная надстройка над Koin, где граф зависимостей тоже строится на функциях, т.к. сам Ktor тоже в этой стилистике.

Автор

Мне кажется это противоречит самому подходу композа, идея в том что за логику отвечают модели, они ходят в сеть, пишут в базу и прочее и меняют Стейт, а композ просто подписывается на изменения, а смешивать их в одно месево то получится куча не читаемого и не поддерживаемого кода.

АнгелДемон-гю
Автор

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

Просто можно посмотреть на ReactJs. По факту эти библиотеки очень похожи. Реакт позиционирует себя, как чисто UI библиотека.

nefedov-dima
Автор

Привет! предлагаю осветить такие темы как использование Баз Данных в мобильной разработке, тот же SQlite, Room, Realm;.
Также обсудить практическое использование в условиях командное разработки систем контроля версий Git/GitHub

Michael
Автор

У тебя этот видос выпал из плейлиста по композу

procolharum
Автор

блин, ну revert же есть :) много написал, просто ревертни, проект-то под VCS у тебя :)

АлександрУколов-лн
Автор

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

mikeshilovski
Автор

Спасибо - стало намного понятнее! Разобрались, почему так часто вызывался SideEffect и вылазил один и тот же state?

ivanchepelkin
Автор

derivedStateOf может быть полезен для маппинга одной модели данных в другую. Или, например, можно сделать отдельное состояние, которое будет вычисляться от нескольких других состояний.

pavelaleksandrov
Автор

C [8:29] Алексей начинает проходить собес по алгоритмам.

aliaksandrbohush
Автор

Спасибо за видео. Не в качестве критики, но всё же - очень отвлекает когда махаешь руками на видео.

pavlosoia
Автор

Поставил на этом и предыдущем видео "Спасибо" комментарий.
Но они не видны. Деньги хоть дошли?
Я пойду писать в гугл, чтобы они починили эти комментарии.

СергейПанов-зц
Автор

Теперь ооп гавно, а функции круто. Когда вы уже определитесь...)

homie