Функция Compose перекомпоновывает, когда передает значение состояния другой функции.Android

Форум для тех, кто программирует под Android
Anonymous
Функция Compose перекомпоновывает, когда передает значение состояния другой функции.

Сообщение Anonymous »

Кажется, я не нашел объяснения этому простому случаю.
Что-то простое, например, модель представления, содержащая встречный поток:

Код: Выделить всё

class TestCounter : ViewModel() {
private val _counter = MutableStateFlow(0)
val counter = _counter.asStateFlow()

init {

viewModelScope.launch {

while (true){
delay(1000)
_counter.update {
it + 1
}
}
}
}
}
И компонуемая функция, которая будет перекомпоновывать себя каждый раз, когда передает значение собранного состояния другой функции. Если я передам сам объект состояния другой функции, рекомпозиции не произойдет. Хотя я читал, что это не лучшая практика.

Код: Выделить всё

@Composable
fun App() {

val testCounter = TestCounter()

val counter = testCounter.counter.collectAsState()

SideEffect {
println("RECOMPOSING EVERY TIME IF PASSING VALUE")
}

DrawCount(counter.value)
//  DrawCount(counter)

}
Я что-то упустил. Если это нормальное поведение, то как бы я использовал делегатов (по) или класс данных для состояния пользовательского интерфейса, содержащий набор значений для различных функций. Это всегда приводит к ненужным рекомпозициям.
Не имеет значения, стабильно значение или нет.

Подробнее здесь: https://stackoverflow.com/questions/784 ... er-functio

Вернуться в «Android»