我有一个填充整个片段的撰写组件。 ViewModel 有一些项目作为要填充在屏幕中的状态。我应该将视图模型还是仅将状态作为参数传递给可组合函数?
您应该将状态而不是视图模型传递给可组合项。 将视图模型直接传递给可组合项将:
复杂的独立 UI 测试,因为您需要创建视图模型的实例(如果这样做):
@可组合 有趣的主屏幕(视图模型:MyViewModel){}
弄乱 Android Studio 上的预览,因为它不知道如何生成视图模型来显示预览。
您应该通过以下状态 导航主机
composable(route = "Home"){
val viewmodel = hiltViewModel<MainViewModel>()
val state = viewModel.state
MainScreen(state = state)
}
或片段
class MainFragment : Fragment() {
private val viewmodel by viewModels<MainViewModel>()
override fun onCreateView() {
setContent {
MainScreen(viewModel.state)
}
}
}
使用类似的可组合项
fun MainScreen(state: ViewState)
然后就可以预览了
@Preview
@Composable
fun MainScreenPreview(){
MainScreen(ViewState(title = "Page Title"))
}