2017-07-27 7 views
0

Ich möchte in meiner Reaktion native App erkennen, ob Benutzer einen Touch-ID-Sensor haben oder nicht und dann, wenn er möchte ich Schaltfläche mit nativen Element Aktion statt nur normalen Aktionsknopf anzeigen. Wenn ich if-Anweisung erstellt habe, zeigt es mir einen Fehler an. Ich verwende 'create-react-native-app' mit dem expo client SDK.Reactive-native Native Element Erkennung

Fehlermeldung

enter image description here

-Code

class LoginButton extends React.Component { 
    state = { 
     waiting: false, 
    }; 

    render() { 
     let authFunction; 
     if (NativeModules.ExponentFingerprint.hasHardwareAsync() === true) { 
      if (Platform.OS === 'android') { 
       authFunction = async() => { 
        this.setState({waiting: true}); 
        try { 
         let result = await NativeModules.ExponentFingerprint.authenticateAsync(); 
         if (result.success) { 
          alert('Udało Ci się zalogować') 
         } else { 
          alert('Logowanie nie udane') 
         } 
        } 
        finally { 
         this.setState({waiting: false}) 
        } 
       }; 
      } else if (Platform.OS === 'ios') { 
       authFunction = async() => { 
        let result = await NativeModules.ExponentFingerprint.authenticateAsync(
         'Zaloguj się przy użyciu TouchID' 
        ); 
        if (result.success) { 
         alert('Udało Ci się zalogować') 
        } else { 
         alert('Logowanie nie udane') 
        } 
       }; 
      } 
      return (
       <Button onPress={authFunction} title="Zaloguj się przy użyciu odcisku palca" style={styles.buttonStyle}> 
        {this.state.waiting 
         ? 'Czekam na TouchID...' 
         : 'Zalogowano przy użyciu TouchID'} 
       </Button> 
      ) 

     } else if (NativeModules.ExponentFingerprint.hasHardwareAsync() === false) { 
      return (
       <Button onPress={} title="Zaloguj się" style={styles.buttonStyle}/> 
      ) 
     } 
    } 
} 

Antwort

1

Das Problem ist hier

<Button 
    onPress={} <--- here 
    title="Zaloguj się" 
    style={styles.buttonStyle} 
/> 

reagiert nicht können Sie JSX-Attributen leere Ausdrücke zuweisen.

Um es zu beheben, entfernen Sie einfach

es
<Button title="Zaloguj się" style={styles.buttonStyle}/> 

oder zuweisen, beispielsweise auf authFunction, die null sein wird.

<Button onPress={authFunction} title="Zaloguj się" style={styles.buttonStyle}/>