【问题标题】:Use non-local state in jetpack compose?在jetpack compose中使用非本地状态?
【发布时间】:2021-01-20 18:57:23
【问题描述】:

可以使用可组合函数中的非本地状态吗?一个示例是 Composable,它显示一个带有字符串的文本,该字符串取自 MutableState,存储为通过 Ambient 检索的对象的成员,如下所示:


data class ServiceX (
   val whateverString: MutableState<String>("meow")
)


@Composable
fun Whatever() {
   val serviceX = AmbientServiceX.current
   Text(serviceX.whateverString)
}

whateverString 改变时,Composable 函数会重新绘制吗?这有什么问题吗?

【问题讨论】:

    标签: kotlin android-jetpack-compose


    【解决方案1】:

    从技术上讲,它应该可以工作,但您可能希望将 MutableState 更改为 mutableStateOf,这会在后台执行更多组合功能。

    但我建议在 compose 中避免使用这样的模式。一般来说,环境应该很少使用,因为环境使可组合物变得“神奇”,它不明显值来自何处或触发值更改的位置。它本质上使您的代码很难调试。

    倾向于创建独立的组件,因为这些组件更易于构建和维护 - 并且是 compose 的一大优势。

    @Composable
    fun Whatever(whateverString: String) {
       Text(whateverString)
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多