Jetpack Compose:如果我将 MutableState 声明为实例变量并在可组合函数中使用它而不记得会发生什么?

问题描述 投票:0回答:1

问题如下;我有一个可变字符串变量,声明为活动的实例变量。当我像这样使用它时,它会按预期工作。当文本字段值更改时,文本值也会更改。

class MainActivity : ComponentActivity() {

  private var text = mutableStateOf("Hello!")

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
      AppTheme {
        Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) {
          TextField(value = text.value, onValueChange = {
            text.value = it
          })

          Text(text = text.value)
        }
      }
    }
  }
}
  1. 这种情况下有什么必要使用remember呢?仅仅是为了将状态隔离到适当的可组合函数吗?
  2. 使用上面提到的可变状态有什么缺点吗?
android android-jetpack-compose
1个回答
0
投票

简短的回答:记住不是让变量能够重组,而是避免重组。

现在,我的意思是,通过记住,compose 会记住变量,并且其值在重组中保留

例如:如果您有另一个可变状态定义了另一个文本块,那么当您更改这个新变量并且您不记得时,第一个变量也会被重新组合。如果您确实记得,状态将被保留,当您有大型应用程序时,这会更有效。

© www.soinside.com 2019 - 2024. All rights reserved.