Фокусировка на вводе текста при навигации focus react

#react-native #react-navigation

#react-native #реагирует-навигация

Вопрос:

У меня есть экран OTP, я добавил ссылку в первое TextInput поле, чтобы при загрузке экрана он фокусировался:

 // ref
const pin1 = useRef();

// navigation listener
navigation.addListener('focus', () => {
     pin1.current.focus();
})
  

Но он возвращает ошибку:
TypeError: undefined is not an object (evaluating 'pin1.current.focus')

Этот код работает довольно хорошо:

 navigation.addListener('focus', () => {
     alert('Hello')
})
  

Комментарии:

1. вы передали эту ссылку в качестве реквизита для TextInput?

2. @TusharPandey да

3. не могли бы вы поделиться своим кодом или несколькими разделами, связанными с ним.

Ответ №1:

Я думаю, вам следует использовать autoFocus={true} с вашим TextInput you, когда вы открываете экран, ваш TextInput автоматически фокусируется.

Проверьте автофокусировку

Комментарии:

1. Коротко и мило. Спасибо вам за это.

Ответ №2:

Вы должны проверить текущий объект перед вызовом любой функции.

 navigation.addListener('focus', () => {
      if (pin1.current) {
        pin1.current.focus();
      }
    });
  

Ответ №3:

Встроить прослушиватель в useEffect

 React.useEffect(() => {
    const unsubscribe = navigation.addListener('focus', () => {
      navigation.addListener('focus', () => {
        pin1.current.focus();
     })
    }
    return unsubscribe;
  }, [navigation, pin1]);
  

также

 <TextInput ref={pin1} />