Код: Выделить всё
data class Car(
val id: Int = 0,
val brand: String = "",
val model: String = "",
val year: Int = 2020
)
Код: Выделить всё
@Composable
fun CarScreen() {
var car by remember { mutableStateOf(Car()) }
Column {
TextField(
value = car.brand,
onValueChange = { newBrand ->
car = car.copy(brand = newBrand) // Using `copy()`
},
label = { Text("Brand") }
)
TextField(
value = car.model,
onValueChange = { newModel ->
car = car.copy(model = newModel) // Using `copy()`
},
label = { Text("Model") }
)
}
}
Меня беспокоит, что вызов copy() при каждом изменении текста может привести к проблемам с производительностью, поскольку он создает новый экземпляр объекта Car каждый раз, когда пользователь вводит текстовое поле. Это происходит при каждом нажатии клавиши, а в более крупных приложениях или формах с большим количеством полей это может оказаться неэффективным.
Мои вопросы:
- Вызов copy() при каждом изменении TextField неэффективен с точки зрения
производительности в Jetpack Compose? Будет ли такое создание константных объектов
и рекомпозиция вызывать заметное снижение производительности,
особенно в моделях больших данных или в сценариях частого ввода текста? - Каковы лучшие подходы к обработке частого ввода текста? изменения
без необходимости постоянного использования copy(), но при этом гарантируя, что
Compose сможет перекомпоновать пользовательский интерфейс при необходимости? Я хочу поддерживать
реактивный пользовательский интерфейс без чрезмерного создания объектов.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ck-compose
Мобильная версия