Conversation
| @@ -0,0 +1,120 @@ | |||
| package com.example.week7 | |||
There was a problem hiding this comment.
저는 xml을 다 지우지 못하고 코드를 짰는데, 다시 compose이용해서 다시 짜볼게요
| @Composable | ||
| fun BuyScreen() { | ||
| var selectedTabIndex by remember { mutableIntStateOf(0) } | ||
| val tabs = listOf( | ||
| stringResource(R.string.all), | ||
| stringResource(R.string.Shirts), | ||
| stringResource(R.string.Shoes) | ||
| ) |
There was a problem hiding this comment.
compose...ㅎㅎ 전 너무 어려운거 같아요 대단해요
jeongkyueun
left a comment
There was a problem hiding this comment.
컴포즈 마이그레이션 잘 하시고 미션 잘 수행하신 거 같아요!! 고생 많으셨습니다~!!
kimdoyeon1234
left a comment
There was a problem hiding this comment.
수고하셨습니다!
BuyGraph를 Nested Navigation으로 구성하고 hierarchy로 선택 상태를 처리한 부분 너무 좋았습니다!! Type-safe Navigation도 올바르게 적용하셨고요
한 가지 꼭 짚고 싶은 부분은 ShoppingCartScreen이 NavController를 직접 파라미터로 받고 있는 점입니다!
Compose에서 Navigation의 핵심 원칙은 "Data Flows Down, Events Flow Up"이에요!
값(데이터)은 파라미터로 내려오고, 화면 전환 같은 이벤트는 람다로 올라가야 해요!
// 현재
fun ShoppingCartScreen(navController: NavController)
->
fun ShoppingCartScreen(onNavigateToBuy: () -> Unit)
NavController는 NavHost가 있는 최상위 레벨에서만 다루고, 하위 Composable은 람다만 받도록 수정해주세요!
추가로 MainView()를 별도 파일로 분리하면 MainActivity가 진입점 역할만 하게 되어 구조가 더 깔끔해질 거예요 :)
| fun ShoppingCartScreen(navController: NavController) { | ||
| Box( |
There was a problem hiding this comment.
NavController를 Composable에 직접 주입하고 있어요!
Composable은 이벤트를 람다로 올려보내는 게 올바른 패턴이에요
// 현재
fun ShoppingCartScreen(navController: NavController)
// 바꾸면 좋을 코드!
fun ShoppingCartScreen(onNavigateToBuy: () -> Unit)
NavController는 NavHost가 있는 상위 레벨에서만 다루고, 하위 Composable은 람다만 받도록 수정하면은 좋을거 같습니다!
| var selectedTabIndex by remember { mutableIntStateOf(0) } | ||
| val tabs = listOf( |
There was a problem hiding this comment.
selectedTabIndex 상태가 BuyScreen 내부에 고립되어 있어요
지금 구조에서는 큰 문제가 없어 보이지만, 탭 상태를 외부에서 제어하거나 저장해야 할 때 한계가 생겨요!
State Hoisting 패턴을 연습 삼아 적용해보면 좋을 것 같습니다!
fun BuyScreen(
selectedTabIndex: Int,
onTabSelected: (Int) -> Unit
)
There was a problem hiding this comment.
NavController 생성과 NavHost 구성, BottomBar까지 모두 MainActivity에 몰려있어요! MainScreen.kt(또는 MainView.kt)를 별도 파일로 분리하면 MainActivity는 진입점 역할만 하게 되어 훨씬 깔끔해져요 :)
📌 PR 제목
🔗 관련 이슈
Closes #49
✨ 변경 사항
🔍 테스트
📸 스크린샷 (선택)
🚨 추가 이슈