Что такое Composable-функция? Какие правила работы у неё есть?

@Composable‑функция — это специальная функция в Jetpack Compose, предназначенная для декларативного описания UI.

Это функция, которая:

  • используется для создания интерфейса
  • может вкладываться в другие @Composable‑функции
  • не вызывает UI напрямую (как setText()), а декларирует, каким должен быть UI при данном state

Что делает @Composable?

  • Аннотация говорит компилятору Jetpack Compose, что:
    • функцию нужно инструментировать
    • она должна принимать скрытый Composer и флаг changed в байткоде
  • Она может участвовать в рекомпозиции
  • Она не может быть вызвана из обычной функции без @Composable

Основные правила и ограничения

ПравилоОбъяснение
Обязательная аннотация @ComposableБез неё функция не участвует в рекомпозиции и не может вызывать другие composable
Имя с заглавной буквы (PascalCase)Не обязательно, но рекомендуется (Google style guide)
Нет возвращаемого значения (Unit)Обычно да: UI-описание => Unit; но не строго — возможен @Composable fun <T> return T
Нельзя вызывать без @Composable‑контекстаGreeting() вызов возможен только внутри другой composable или setContent {}
Не блокировать поток! (delay, withContext)Можно использовать только suspend внутри LaunchedEffect, rememberCoroutineScope, и пр.
Composable функции могут быть inlineДля оптимизации и composition
Побочные эффекты запрещены напрямуюИспользуй SideEffect, LaunchedEffect, rememberUpdatedState, и др.

Опубликовано

в

от

Метки: