reactjs - Skickar refs i React Native med TypeScript: (egenskap) React.MutableRefObject<null>.current: null Objektet kan möjligen vara 'null'.ts(2531)


Jag har flera fält på ett React Native-formulär och jag skulle vilja att fokus hoppar från ett till nästa varje gång användaren bekräftar fältet med det virtuella tangentbordet.

Jag kom på något liknande:

        <NamedTextInput
          name={'email'}
          ref={emailRef}
          ...
          onSubmitEditing={() => passwordRef.current.focus()}
        />
        
        <NamedTextInput
          name={'password'}
          ref={passwordRef}
          ...
        />

För närvarande får jag ett TypeScript-fel:

(property) React.MutableRefObject<null>.current: null
Object is possibly 'null'.ts(2531)

Jag försökte lägga till ! och ?-tecken men det slutade med:

Property 'focus' does not exist on type 'never'.ts(2339)

Någon idé för att lösa detta?

Tack

Svar #1

Okej, jag fixade den här. Jag glömde typen i useRef-deklarationen:

const passwordRef = useRef<TextInput>(null)

Då kan jag lägga till ett !-tecken eller kontrollera existensen av den aktuella referensen utan att få felet "never":

onSubmitEditing={() => (passwordRef.current && passwordRef.current.focus())}