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
반응형
'Android Compose' 카테고리의 다른 글
Composable functions with non-default parameters are not supported in Preview unless they are annotated with @PreviewParameter (0) | 2024.07.14 |
---|---|
XML에서 Compose로 마이그레이션 gradle 세팅하기 (feat. BOM이란?) (0) | 2024.07.14 |
선언형이란? (1) | 2024.07.13 |
Android 컴포즈를 쓰는 이유는? (1) | 2024.07.13 |
Android Kotlin Compose Proto DataStore (kotlin dsl) (0) | 2024.07.07 |