我想在我的一些文本输入焦点时更改组件的一些样式,
我使用世博会 34.0.0
我尝试过两种方法:使用 ref 和使用状态,两者都有我需要了解的问题。
到目前为止,当我通过 TextInput 中的函数更改它们时onFocus
<TextInput>
中的样式按预期工作。
但是当我尝试通过包含或使用按钮通过调用refTitle.current.setNativeProps()
来使用相同的方法来更改refTitle
<Text>
样式时,每次我尝试更改文本样式时,它只返回 refTitle.current.setNativeProps 是未定义的。
const refTitle = useRef(null)
const refUser = useRef(null)
return (
<Card>
<Margin>
<Text ref={ refTitle } style={ styles.title }>as</Text>
<TextInput
ref={ refUser }
style={ [styles.input] }
onSubmitEditing={ () => refPassword.current.focus() }
onFocus={ () => refUser.current.setNativeProps({ style: { borderColor: FOCUS_COLOR } }) }
onBlur={ () => refUser.current.setNativeProps({ style: { borderColor: BLUR_COLOR } }) }
/>
所以如果我更改文本中的焦点输入
const handleFocus = () => {
refTitle.current.setNativeProps({ style: { color: FOCUS_COLOR } })
refUser.current.setNativeProps({ style: { borderColor: FOCUS_COLOR } })
}
我不知道为什么它不起作用,一直在搜索但指南告诉我没关系,这是最近的 React Native 中的错误吗?
2nd.我确实使用了状态,这更简单,但有一种我不明白的错误。
我只是使用onFocus函数来设置状态新颜色,...每次我单击文本输入时,它都会更改颜色...但它并没有真正聚焦,我必须再次单击才能使其完全聚焦(键盘出现并且指示器开始滴答作响(
你必须使用引用才能使用 setNativeProps
<TextInput
ref={ref => {this.referencedeTF = ref;
}}
/>
this.referencedeTF.setNativeProps({
borderColor: "red",
borderWidth: 1
});
您以错误的方式使用引用。
事实证明,我使用的是不同的<Text>
,而不是来自 react-native...解决了它,但我仍然感到困惑,如果使用状态迫使我单击两次以触发焦点,而第一次按已经改变了颜色,也许是因为文本不是来自 React-native