Jetpack Compose 에서 ViewModel 편하게 쓰기

오준석·2021년 7월 20일
0

코딩삽질방지

목록 보기
10/53

기존 사용 방식이 이런 느낌

private val viewModel by viewModels<MainViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            TodoListTheme {
                Surface(color = MaterialTheme.colors.background) {
                    MainScreen(viewModel)
                }
            }
        }
    }

컴포즈 특성상 컴포즈 내에 컴포즈가 중첩되는데 저~~ 밑에서 ViewModel을 사용하려면 계속 넘겨줘야 함

lifecycle-viewmodel-compose 라이브러리를 적용하고

implementation "androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07"

ViewModel을 사용해야 되는 컴포즈에서 다음과 같이 viewModel()로 현재 연관된 ViewModel을 생성하거자 재사용할 수 있음

@Composable
fun Body(viewModel: MainViewModel = viewModel()) {
}
profile
교육하고 책 쓰는 개발자

0개의 댓글