根据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;

09-11 06:09