【问题标题】:Managing State with @Model Jetpack Compose doesn't work使用 @Model Jetpack Compose 管理状态不起作用
【发布时间】:2020-01-24 09:53:59
【问题描述】:

我有一个具有@Model 状态的撰写按钮。

@Model
class CounterState(var count: Int = 0)

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        MyApp {
            Counter(CounterState())
        }
    }
  }
}

@Composable
fun Counter(state: CounterState) {
Button(
    text = "I've been clicked ${state.count} times",
    onClick = {
        state.count++
    },
    style = ContainedButtonStyle(color = if (state.count > 5) Color.Green else Color.White)
  )
}

当我点击按钮时,它的文本没有更新。

有人知道为什么吗?

【问题讨论】:

    标签: android kotlin android-jetpack-compose


    【解决方案1】:

    在这条线上

    Counter(CounterState())
    

    您每次都在创建一个新的CounterState,每次重组时都会将其重置为零。您应该在合成之外创建一次,然后将其存储在一个变量中,以便每次都传递给Counter

    【讨论】:

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