我有一个带有@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)
)
}
当我单击按钮时,其文本不会更新。
有人知道为什么吗?
答案 0 :(得分:0)
在此行
Counter(CounterState())
您每次都会创建一个新的CounterState
,每次重新创建时都会将其重置为零。您应该在合成之外创建一次,然后将其存储在变量中,以便每次都传递到Counter
中。