Tomáš Hubálek
06/17/2021, 9:33 AMremember
?Oleksandr Karpovich [JB]
06/17/2021, 12:18 PMTomáš Hubálek
06/17/2021, 12:41 PMOleksandr Karpovich [JB]
06/17/2021, 4:08 PMclass ReferenceHolder<T>(var ref: T? = null)
then the code will look something like:
val textState = remember { mutableStateOf("") }
val cursorPosition = remember { mutableStateOf(0) }
Div {
val reference = remember { ReferenceHolder<HTMLInputElement>() }
Input(type = InputType.Text, value = textState.value, attrs = {
ref {
reference.ref = it as HTMLInputElement
onDispose {
reference.ref = null
}
}
onTextInput {
cursorPosition.value = it.nativeEvent.target?.asDynamic()?.selectionStart ?: 0
textState.value = it.inputValue
}
})
DomSideEffect {
println("The previous cursor position was = ${cursorPosition.value}")
// you can use reference.ref to access your Input element and set its cursor
}
}
or you can even use element in DomSideEffect { yourDivElement -> }
to get to the input from its parent. In this case there is no need for val reference = ...
and ref { reference.ref = ...}
Although, a variant with reference
seems to be more reliableTomáš Hubálek
06/18/2021, 7:53 AM