根据React Native API文档中的此链接:
https://facebook.github.io/react-native/docs/0.59/textinput#isfocused
TextInput组件具有一个称为isFocused()的方法。我将如何访问此方法?我必须使用裁判吗?
另外,我已经知道可以通过使用onFocus道具并设置状态管理器和基于onFocus更改输入状态的函数来达到相同的效果。但是,我很好奇我将如何使用这些组件方法,因为其他组件中也有其他方法。
我试过用这个
<TextInput onChangeText={this.handleText} style={(this.isFocused()) ? styles.input : styles.lame} placeholder="Names"/>
但似乎我可能必须使用ref,因为即使方法应该是此组件的一部分,但似乎未定义它。
最佳答案
isFocused()应该在对TextInput的引用上调用。
import React, {useEffect, useRef} from 'react';
import {TextInput, BackHandler} from 'react-native';
function SearchBar() {
const textInputReference = useRef(null);
useEffect(() => {
let backhandler = BackHandler.addEventListener(
'hardwareBackPress',
function() {
if (textInputReference.current.isFocused()) {
textInputReference.current.blur();
return true;
}
return false;
},
);
return () => {
backhandler.remove();
};
}, []);
return (
<TextInput ref={textInputReference} />
);
}
export default SearchBar;