0

我有一个具有@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)
  )
}

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

有谁知道为什么?

4

1 回答 1

0

在这条线上

Counter(CounterState())

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

于 2020-01-27T05:25:12.110 回答