[ClimbUp๐ง]๋ทฐ๋ชจ๋ธ ์ฌ์ฉ ์ Compose Preview ์๋ฌ ํด๊ฒฐ
๋ฌธ์ ๋ฐ์
ํ๋ก์ ํธ ์ค ์ด๋ค ์์ ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์๊ธฐ ํ๋ฆฌ๋ทฐ๊ฐ ์๋๊ธฐ ์์ํ๋ค..ใ ใ
UI๊ฐ๋ฐ ํ ๋ ํ๋ฆฌ๋ทฐ๊ฐ ์๋๋๊น ์ฝ๊ฐ ๋๊ฐ๋ฆฌ๊ณ ๋ก ์จ๋ ๋๋์ด๋ผ ํ๋์ฉ ์ฃผ์์ฒ๋ฆฌ๋ฅผ ํ๋ค๊ฐ ์์ธ์ด ๋ทฐ๋ชจ๋ธ ๋๋ฌธ์ด๋ผ๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
๋ฌธ์ ์ ์์ธ์ด ๋๋ ์ฝ๋์ ํ์์ ์ด์์์ ์์ธํ๊ฒ ํ์ธ ํ ์์๋ค.
ํด๊ฒฐ
์ด ์ข๊ฒ๋ ์ ์ฃผ์ ์งํ๋ ์ํฐ๋ ํ๋ฆฌ์จ๋ณด๋ฉ ๊ฐ์์์ ์ด ๋ฌธ์ ๊ฐ ์ธ๊ธ ๋์๋ ์ ์ด ์์๋ค.
์ด๋ ๊ฐ์ฌ๋์ด ์ฃผ์ ๋งํฌ๋ฅผ ์ ์ฅํด๋๋๋ฐ ๊ทธ๊ฒ ์๊ฐ์ด ๋์ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ ์ ์์๋ค!๐
๋ฌธ์์ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๋ฉด
- ๋ทฐ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ์ปดํฌ์ ๋ธ์ ํ๋ฆฌ๋ทฐ๋ฅผ ์ฌ์ฉ ํ ์ ์์
- ๋ทฐ๋ชจ๋ธ ์ธ์คํด์ค๋ฅผ ๋ค๋ฅธ ํ์ ์ปดํฌ์ ๋ธ๋ก ์ ๋ฌํด์ ์๋จ
- ์ด๋ ๊ฒ ๋๋ฉด ํ์ ์ปดํฌ์ ๋ธ๋ ๋ชป๋ณด๊ฒ๋จ
- ์ฌ์ฌ์ฉ์ฑ ๋จ์ด์ง
์ ๋ฆฌํ๋ฉด ์ปดํฌ์ ๋ธ์์ ๋ทฐ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ค๋ฉด ํด๋น ์ปดํฌ์ ๋ธ ํจ์๋ฅผ ๋ทฐ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ๋ถ๋ถ๊ณผ ๊ทธ๋ ์ง ์์ ๋ถ๋ถ์ผ๋ก ๋๋ ์ ์ฌ์ฉํด์ผํ๋ค๋ ๊ฒ์ด๋ค.
๋๋ ์ด๊ฑธ ์๋์ ๊ฐ์ด ํด๊ฒฐํ๋ค.
@Composable
internal fun HomeScreen( //ComposalbeA์ญํ
climbingRecViewModel: ClimbingRecordViewModel = viewModel()
){
val onDateSelected:(Long?)->Unit={
climbingRecViewModel.getDayRecords(it)
}
val onMonthChanged={}
HomeScreen(
dayUiState=climbingRecViewModel.dayUiState,
monthUiState = climbingRecViewModel.monthUiState,
onDateSelected = onDateSelected
)
}
@Composable
private fun HomeScreen( //ComposableB์ญํ
modifier: Modifier = Modifier,
dayUiState: StateFlow<DayUiState>?=null,
monthUiState: StateFlow<MonthUiState>?=null,
onDateSelected:(Long?)->Unit={},
){
๊ฐ์ ์ด๋ฆ์ ํจ์๊ฐ ๋๊ฐ๊ฐ ์๋๋ฐ ์ด๊ฑด ํจ์ ์ค๋ฒ๋ก๋ฉ์ ํ์ฉํ ๊ฒ์ด๋ค.
๊ณตํ์ฝ๋์์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ฐ์ด๋๊ฒ ๊ฐ์์ ์ด๋ ๊ฒ ํด๋ดค๋๋ฐ ๊ฐ์ ํจ์์ ์์ด์ผํ ๋ด์ฉ์ ์ชผ๊ฐ ๊ฑฐ๋ผ์ ์ด๋ ๊ฒ ์ด ๊ฒ ์๋๊ฐ ์ถ๋ค.
+) ๊ณตํ ์ฝ๋
๊ณตํ์ ์ฌ๋ผ์จ ์ฝ๋์ธ๋ฐ ์๋ ๋์ค์ ๋ณด๊ธฐ ์ฝ๋๋ก ์ฃผ์์ ๋ฌ์๋์๋ค.
@Composable
fun AuthorColumn(viewModel: AuthorViewModel = viewModel()) {// ๋ทฐ๋ชจ๋ธ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ์ปดํฌ์ ๋ธ
AuthorColumn(//UI๋ฅผ ๋ด๋นํ๋ ์ปดํฌ์ ๋ธ- ๋ทฐ๋ชจ๋ธ์ด ๋งค๊ฐ๋ณ์๋ก ๋ค์ด์ค๋ฉด ํ๋ฆฌ๋ทฐ๊ฐ ์๋๋ฏ๋ก ์ฌ๊ธฐ์ ๋ทฐ๋ชจ๋ธ๋ฐ์ดํฐ๋ฅผ ๋ฝ์์ ๋ณด๋ด์ค
name = viewModel.authorName,
posts = viewModel.posts
)
}
//Preview์์ ํ์ฉ
@Preview
@Composable
fun AuthorScreenPreview(// ํ๋ฆฌ๋ทฐ์์๋ ๋ทฐ๋ชจ๋ธ์ ์ฌ์ฉํ์ง ์๋ ์ปดํฌ์ ๋ธ๋ง ์ฌ์ฉ
name: String = sampleAuthor.name,
posts: List<Post> = samplePosts[sampleAuthor]
) {
AuthorColumn(...) {
name = NameLabel(name),
posts = PostsList(posts)
}
}
+) ์๋ฌธ
- ๋ง์ฝ ๋ถ๋ถ์ ์ธ ํ์ ์ปดํฌ์ ๋ธ์์๋ง ๋ทฐ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ด์ ์ ๋ฐ ๊ตฌ์กฐ์ ์ปดํฌ์ ๋ธ์ ์ฌ๋ฌ๊ฐ ๋ง๋ ๋ค๋ฉด ์คํฌ๋ฆฐ ์ ์ฒด์ ์ปดํฌ์ ๋ธ์ ๋ณด๊ธฐ ํ๋ค์ง ์๋
- ๊ทธ๋ ๋ค๊ณ ์ต์์ ์ปดํฌ์ ๋ธ์๋ง ์ ๋ฐ ๊ตฌ์กฐ๋ฅผ ์ ์ฉํ ํ ๋ทฐ๋ชจ๋ธ ์์ ์ ๋ชฝ๋ ๋ชฐ์๋๊ณ ์ฐ์๋ ๋ถํ์ํ ํธ์ด์คํ ์ด ์ผ์ด๋์ง ์์๊น(์ํ ํธ์ด์คํ ์ ๊ดํ ๋ฌธ์์์๋ ๋ถํ์ํ ํธ์ด์คํ ์ ์ง์ํ๋ผ๊ณ ๋์ด์์ด์ ๋ ์๋ฌธ์ธ๋ฐ ๋ทฐ๋ชจ๋ธ์์๋ ์ด๋ป๊ฒ ์ ์ฉ๋ ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค.)
์ฐธ๊ณ
์๋๋ก์ด๋ Compose Preview๋ฅผ ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์? - ํจ์๋ฅผ ์ ๋ถ๋ฆฌํ์.
๋๊ธ๋จ๊ธฐ๊ธฐ