提问人:MH-Rouhani 提问时间:7/27/2023 更新时间:7/27/2023 访问量:38
将 mutablestate 传递给可组合函数是否最优?
Is passing mutablestate to composable function optimal?
问:
喜欢这个:
@Composable
fun TextEdit(textState: MutableState<String>) {
val text by textState
TextField(onValueChange = {
text = it
}, value = text)
}
对于不必要的重组,它是最佳选择吗?
答:
1赞
Ayman Ait
7/27/2023
#1
这仍然会触发不必要的重组,而是尝试使用状态提升的概念,在代码应该位于的位置:
@Composable
fun TextEdit(textState: String) {
TextField(onValueChange = {
textState = it
}, value = textState)
}
以下是要遵循的最佳实践:
您应该将 UI 状态提升到所有之间的最低共同祖先 读取和写入它的可组合项。您应该保持状态最接近 到它被消费的地方。从国有企业,向消费者公开 不可变状态和事件来修改状态。
最低的共同祖先也可以在组合之外。为 例如,在 ViewModel 中提升状态时,因为业务逻辑是 涉及。
评论
0赞
MH-Rouhani
7/28/2023
你确定它会触发不必要的重组吗?如何?
评论