AIKraft/Skills/Побочные эффекты в compose

Побочные эффекты в compose

Use when writing or reviewing Jetpack Compose code with LaunchedEffect, DisposableEffect, SideEffect, rememberCoroutineScope, rememberUpdatedState, snapshotFlow, snackbar, navigation, focus requests, analytics, or event Flow collection.

chrisbanes official Документы

Что делает навык

Навык описывает принципы работы с побочными эффектами в Jetpack Compose, где тело композабла описывает UI, а работа, изменяющая внешний мир, должна выполняться в API эффектов с соответствующим жизненным циклом. Он помогает выбрать наименьший подходящий эффект (SideEffect, DisposableEffect, LaunchedEffect, rememberCoroutineScope, snapshotFlow) для публикации состояния, регистрации слушателей, запуска отложенной работы или преобразования снимков состояния в Flow.

Когда применять

  • Публикация состояния Compose в код, не являющийся частью Compose, после каждой успешной перерисовки.
  • Регистрация или отписка от слушателей, обратных вызовов, наблюдателей или ресурсов.
  • Запуск отложенной или однократной работы, зависящей от ключей.
  • Запуск приостанавливаемой работы из обратного вызова пользовательского события.
  • Преобразование чтений снимков Compose в Flow внутри корутины.

Как работает

  1. Определить, что работа изменяет внешний мир, и вынести её из тела композабла в API эффектов.
  2. Выбрать наименьший подходящий эффект на основе задачи: SideEffect для публикации состояния, DisposableEffect для регистрации ресурсов, LaunchedEffect для однократной работы, rememberCoroutineScope для запуска работы из колбэков.
  3. Использовать snapshotFlow внутри LaunchedEffect для преобразования чтений снимков в Flow.
  4. Настроить ключи (keys) эффектов, так как они определяют идентичность перезапуска: при изменении любого ключа старый эффект отменяется/уничтожается, а новый начинается.

Примеры запросов агенту

Как правильно использовать LaunchedEffect для запуска однократной работы при изменении ключа?
Приведи пример использования DisposableEffect для регистрации слушателя в Jetpack Compose.
Как преобразовать чтение состояния Compose в Flow с помощью snapshotFlow?

Описание составлено по SKILL.md навыка, сверено 05.10.2026.

Как подключить

1Скачать навык
# возьмите папку навыка «compose-side-effects» из репозитория: # https://github.com/chrisbanes/skills
2Положить папку с SKILL.md к навыкам ассистента
# положите папку навыка туда, где ассистент ищет skills: cp -r compose-side-effects/ ~/.claude/skills/compose-side-effects/

Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.