1
resposta

viewModel via parametro do composable

Passar o viewModel via parametro do composable é uma boa prática.

Pelo que entendi na doc, não seria...

"Aviso: não transmita instâncias do ViewModel para outras funções de composição. Fazer isso une a função de composição ao tipo do ViewModel e o torna menos reutilizável, além de mais difícil de testar e visualizar. Além disso, não haveria uma Única fonte de informações (SSOT, na sigla em inglês) que gerencia a instância do ViewModel. Transmitir o ViewModel para baixo permite que vários elementos de composição chamem funções do ViewModel e modifiquem o estado dele, o que dificulta a depuração de bugs. Em vez disso, siga as práticas recomendadas de UDF e transmita apenas o estado necessário. Da mesma forma, transmita os eventos de propagação até que cheguem à SSOT de composição do ViewModel, que gerencia o evento e chama os métodos correspondentes."

https://developer.android.com/topic/architecture/ui-layer/stateholders?hl=pt-br#business-logic

Caso eu tenha entendido certo, existe algum cenário, ao qual se faz necessário passar o viewModel por parametro?

1 resposta

Olá, Thailan!

Pode haver cenários em que seja necessário passar o ViewModel como parâmetro. Por exemplo, se você tiver um composable que precisa acessar um método específico do ViewModel que não está diretamente relacionado ao estado do composable. Nesse caso, você pode passar apenas o estado necessário para o composable e manter o ViewModel como uma propriedade privada da função de composição.

Um exemplo do que citei acima é um projeto 'sample' do próprio Google, você pode ver o viewModel sendo passado como parâmetro neste link, não é necessariamente uma prática ruim.

Em resumo, é recomendado seguir as práticas recomendadas de UDF (Unidirectional Data Flow) e transmitir apenas o estado necessário para os composables, evitando passar o ViewModel como parâmetro sempre que possível.

Espero ter ajudado e bons estudos!