我有这样的代码:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
TestsTheme {
var myvalue = remember{ mutableStateOf(4)}
Row() {
CustomText(myvalue = myvalue)
CustomButton(myvalue = myvalue)
}
}
}
}
}
@Composable
fun CustomButton(myvalue: MutableState<Int>) {
Button(onClick = {myvalue.value++}) {
}
}
@Composable
fun CustomText(myvalue: MutableState<Int>) {
Text("${myvalue.value}")
}
当我点击CustomButton时,CustomText会重新组合并更改它的值(这是可以的),但如果我用某个类的对象替换myvalue,它就不起作用了
如果myvalue现在是TestClass的一个实例,并且它在下面的代码中发生了更改,那么如何重新组合CustomText?
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
TestsTheme {
var myvalue = remember{ mutableStateOf(TestClass(4))}
Row() {
CustomText(myvalue = myvalue)
CustomButton(myvalue = myvalue)
}
}
}
}
}
@Composable
fun CustomButton(myvalue: MutableState<TestClass>) {
Button(onClick = {myvalue.value.a++}) {
}
}
@Composable
fun CustomText(myvalue: MutableState<TestClass>) {
Text("${myvalue.value.a}")
}
data class TestClass(var a: Int) {
}