这是mvi状态
这是viewModel
这是activity
当我按下Button之后,发现state.loading 由false ->ture ,true ->false 也会导致读取state.text的函数重组
我的预期是这样,首先flow->onStart 会导致loading重组,然后 flow->onComplete 会导致loading 重组,在flow->collect 会导致 text重组,可是每次state的变更都会导致所有读取了state值的地方重组,这不是我需要的,于是我代码改成如下
不在将整个uiState 替换 而是只改变某个值,那样是不是就能值重组我 改变了值的属性
结果还是一样,
后来发现,其实我需要实现的是延时重组,也就是说,我在需要的时候在去获取整个值,而不是很早就读取整个值,因为在哪里读取,那个地方就会重组(值改变的情况),所以在以上的基础上,修改如下代码
最后的log如下
最后想说的是,有没有Compose大佬来看一眼,应该是这样写的吗?还是说 有什么其他的方法,欢迎大家留言讨论。