可以使用 Composable 函数的非本地状态吗?一个例子是一个 Composable,它显示了一个文本,其中一个字符串取自 MutableState
,存储为通过环境检索的对象的成员,如下所示:
data class ServiceX (
val whateverString: MutableState<String>("meow")
)
@Composable
fun Whatever() {
val serviceX = AmbientServiceX.current
Text(serviceX.whateverString)
}
当 whateverString
发生变化时,Composable 函数会重新绘制吗?这有什么问题吗?
答案 0 :(得分:2)
技术上应该可行,但您可能希望将 areas
更改为 MutableState
,这会在幕后进行更多的创作。
但我建议在撰写中避免这样的模式。一般来说,环境应该很少使用,因为环境使组合物变得“神奇”,因为值来自何处或触发值更改的位置并不明显。它本质上使您的代码很难调试。
倾向于创建独立组件,因为这些组件更易于构建和维护 - 并且是组合的最大好处。
mutableStateOf