Наткнулся на статью "38 ошибок в Compose" и возникло строгое ощущение, что статью писало ChatGPT, ибо ошибок и неточностей там огромное количество, даже начиная с самых первых пунктов.
1. Нам предлагают написать такой код за место обычной лямбды:
При том, что rememberUpdatedState в целом используется для другого, в примере с обычной лямбдой было бы все окей, так как Compose умеет мемеизировать лямбды со стабильным типами.
В большинстве случаев вам не нужно ничего оптимизировать – это задача команды Compose. Но если все же нужно:
🔵 оберните лямбды с нестабильными типами в remember
🔵 передавайте часто меняющиеся параметры как Sate или лямбду
2. Далее нам предлагают заменить вложенные layout на Box или ConstraintLayout🤡
Тут даже комментировать не хочется, ибо в Compose есть правило одного прохода, вьюшки не меряются два раза, соответственно проблем с производительностью не будет.
Разумеется это не все проблемы в статье, так что не верьте всему, что написано в интернете (мне тоже), а лучше читайте официальную документацию🗿
1. Нам предлагают написать такой код за место обычной лямбды:
@Composable
fun MyComponent() {
var counter by remember { mutableStateOf(0) }
val clickAction = rememberUpdatedState { counter++ }
Button(onClick = { clickAction.value.invoke() }) {
Text("Clicked $counter times")
}
}
При том, что rememberUpdatedState в целом используется для другого, в примере с обычной лямбдой было бы все окей, так как Compose умеет мемеизировать лямбды со стабильным типами.
В большинстве случаев вам не нужно ничего оптимизировать – это задача команды Compose. Но если все же нужно:
2. Далее нам предлагают заменить вложенные layout на Box или ConstraintLayout
Тут даже комментировать не хочется, ибо в Compose есть правило одного прохода, вьюшки не меряются два раза, соответственно проблем с производительностью не будет.
Разумеется это не все проблемы в статье, так что не верьте всему, что написано в интернете (мне тоже), а лучше читайте официальную документацию