如何在撰写中将文本字段的值分配给提升状态?
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
分配给包装组件的方法,因为您不能通过引用在参数中使用 ref
或 out
之类的变量来传递变量.
您需要向 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)
}
我想制作一个可重复使用的组件,其中包括 TextField
,例如
@Composable
fun ReusableFormField(textFieldValue: TextFieldValue){
--label stuff here--
TextField(value = textFieldValue, onValueChange = {
textFieldValue = it)
})
--helper stuff here
}
但是我找不到将 textFieldValue
分配给包装组件的方法,因为您不能通过引用在参数中使用 ref
或 out
之类的变量来传递变量.
您需要向 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)
}