기존 사용 방식이 이런 느낌
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()) {
}