像这样:
@Composable
fun TextEdit(textState: MutableState<String>) {
val text by textState
TextField(onValueChange = {
text = it
}, value = text)
}
对于不必要的重组来说它是最佳选择吗?
这仍然会触发不必要的重组,而是尝试使用 状态提升的概念,您的代码应该是:
@Composable
fun TextEdit(textState: String, onTextStateChange: ()-> Unit) {
TextField(onValueChange = onTextStateChange, value = textState)
}
开
这是要遵循的最佳实践:
您应该将 UI 状态提升到所有状态之间的最低公共祖先 读取和写入它的可组合项。你应该保持状态最接近 到消费的地方。来自国家所有者,暴露给消费者 不可变状态和修改状态的事件。
最低共同祖先也可以在组合之外。为了 例如,当在 ViewModel 中提升状态时,因为业务逻辑是 参与其中。