Kotlin Jetpack Compose中Composable间传递状态变量报错求助
解决Jetpack Compose状态传递的类型不匹配问题
问题原因
你遇到的Type mismatch错误,是因为在SignIn组件的onNameChange回调里,错误地直接给MutableState变量name赋值字符串。name是MutableState<String>类型,它的内部值需要通过value属性来更新,而不是直接替换整个MutableState对象。
修复后的代码
@Composable fun SignIn(view: View) { var name = remember { mutableStateOf("") } Column(modifier = Modifier.fillMaxSize()) { Spacer(modifier = Modifier.height(250.dp)) Text( text = "My Mental Health", fontSize = 36.sp ) Spacer(modifier = Modifier.height(50.dp)) // 修复:更新MutableState的value属性,而不是直接赋值变量 TextInputField(label = "Email", value = name.value, onNameChange = { name.value = it }) } } @Composable fun TextInputField(label: String, value: String, onNameChange: (String) -> Unit) { Column( modifier = Modifier .width(LocalConfiguration.current.screenWidthDp.dp) .height(125.dp) ) { Text( text = label, modifier = Modifier.height(25.dp) ) Spacer(modifier = Modifier.height(25.dp)) TextField(value = value, onValueChange = onNameChange) } }
关键说明
remember { mutableStateOf("") }创建的是一个MutableState<String>对象,它持有可观察的状态值,必须通过.value来读写内部的字符串值。- 你的
TextInputField组件定义是正确的:接收字符串类型的value,以及接收字符串参数的回调onNameChange,只需要在父组件里正确传递更新逻辑即可。
内容的提问来源于stack exchange,提问作者mfusco
相关产品推荐
相关产品推荐

