如何在撰写中将文本字段的值分配给提升状态?

How to assign the value of a textfield to a hoistedState in compose?

我想制作一个可重复使用的组件,其中包括 TextField,例如

@Composable
fun ReusableFormField(textFieldValue: TextFieldValue){
   --label stuff here--
   TextField(value = textFieldValue, onValueChange = {
            textFieldValue = it)
   })
   --helper stuff here
}

但是我找不到将 textFieldValue 分配给包装组件的方法,因为您不能通过引用在参数中使用 refout 之类的变量来传递变量.

您需要向 ReusableFormField 提供一个 lambda 参数来更新值。

@Composable
fun ReusableFormField(
    value: TextFieldValue,
    onValueChange: (TextFieldValue) -> Unit
){
   // --label stuff here--
   TextField(value = value, onValueChange = onValueChange)
   // --helper stuff here
}

如果您记得上面的 textFieldValue 状态,您可以传递事件顶部并在那里修改状态。然后它会被重新组合。

@Composable
fun ParentComposable(){
    var textFieldValue by remember {
        mutableStateOf(TextFieldValue(""))
    }
    ReusableFormField(
        textFieldValue,
    ){
        textFieldValue = it
    }
}

@Composable
fun ReusableFormField(
    textFieldValue: TextFieldValue,
    onValueChange: (TextFieldValue) -> Unit
){
    TextField(value = textFieldValue, onValueChange = onValueChange)
}