Вызов нескольких функций ViewModel на экране против одной функции ViewModel ⇐ Android
-
Anonymous
Вызов нескольких функций ViewModel на экране против одной функции ViewModel
Скажем, в OrderScreen у нас есть OrderViewModel(orderRepository) и UserViewModel(userRepository).
Подход №1:
class OrderViewModel(private val orderRepository: OrderRepository) : ViewModel() { весело doSomething() = viewModelScope.launch { заказРепозиторий.doSomething() } } класс UserViewModel(private val userRepository: UserRepository): ViewModel() { весело doSomething() = viewModelScope.launch { userRepository.doSomething() } } @Композитный забавный OrderScreen( OrderViewModel: OrderViewModel = viewModel(), userViewModel: UserViewModel = viewModel() ) { someButton.setOnclickListener { заказViewModel.doSomething() userViewModel.doSomething() } } Подход №2:
класс OrderViewModel( частный вал orderRepository: OrderRepository, частный val userRepository: UserRepository ) : ViewModel() { весело doSomething() = viewModelScope.launch { заказРепозиторий.doSomething() userRepository.doSomething() } } @Композитный весело OrderScreen (orderViewModel: OrderViewModel = viewModel()) { someButton.setOnclickListener { заказViewModel.doSomething() } } Какой из них лучше и почему? Спасибо.
Скажем, в OrderScreen у нас есть OrderViewModel(orderRepository) и UserViewModel(userRepository).
Подход №1:
class OrderViewModel(private val orderRepository: OrderRepository) : ViewModel() { весело doSomething() = viewModelScope.launch { заказРепозиторий.doSomething() } } класс UserViewModel(private val userRepository: UserRepository): ViewModel() { весело doSomething() = viewModelScope.launch { userRepository.doSomething() } } @Композитный забавный OrderScreen( OrderViewModel: OrderViewModel = viewModel(), userViewModel: UserViewModel = viewModel() ) { someButton.setOnclickListener { заказViewModel.doSomething() userViewModel.doSomething() } } Подход №2:
класс OrderViewModel( частный вал orderRepository: OrderRepository, частный val userRepository: UserRepository ) : ViewModel() { весело doSomething() = viewModelScope.launch { заказРепозиторий.doSomething() userRepository.doSomething() } } @Композитный весело OrderScreen (orderViewModel: OrderViewModel = viewModel()) { someButton.setOnclickListener { заказViewModel.doSomething() } } Какой из них лучше и почему? Спасибо.
Мобильная версия