본문 바로가기
Android Compose

Android Compose Slot API란?

by 히예네 2024. 8. 12.
728x90
반응형

@Composable 컴포저블 함수란?

데이터를 전달받고 UI 요소를 방출 할 수 있는 함수이다. 컴포즈는 명령형이 아닌 선언형 UI를 기본으로한 프레임워크이다.

String data를 받아, Text라는 UI를 방출한다.

(기존이라면 xml에 View를 만들고 viewbinding 혹은 findViewById로 데이터를 변경해줘야했다.)

Slot API란?

Slot API 공식문서: https://developer.android.com/develop/ui/compose/layouts/basics#slot-based-layouts

어떤 @Composable 함수다른 @Composable 함수 or 컴포넌트를 포함할 수 있게 되어있는 것을 Slot API라고 부른다.

슬롯은 다들 상상하는 거처럼 뭐랄까 중간에 끼울 수 있는 공간? 구멍이다.

TopAppBar 를 생각해보자! AppBar 안에 title, navigationIcon, actions 을 넣을수있다. 마치 틀 안에 공간을 만들어서 끼워진다.

@Composable
fun TopAppBar(
    title: @Composable () -> Unit,
    modifier: Modifier = Modifier,
    navigationIcon: (@Composable () -> Unit)? = null,
    actions: @Composable RowScope.() -> Unit = {},
    backgroundColor: Color = MaterialTheme.colors.primarySurface,
    contentColor: Color = contentColorFor(backgroundColor),
    elevation: Dp = AppBarDefaults.TopAppBarElevation
): Unit

TopAppBar의 코드를 보면 파라미터 안에 컴포저블 함수가 들어있는 걸 볼 수 있다. 이런걸 슬롯 API라고한다!

Slot API의 장점

  • 매개변수를 모두 설정하지 않아도 된다.
    • content: @Composable () → Unit 파라미터로 함수를 구현할 때, 내가 원하는 자식 요소를 구성할 수 있다. 즉 title을 String으로 하드코딩했다면, 무조건 나는 String 으로 title을 지정해줬어야했다. slot API를 쓰면 그럴 필요가 없는것이다. 내가 원하는 자식 요소를 content로 받아오면 된다. 
    • 재사용성, 확장성이 좋아진다.
  •  
728x90
반응형