2016-04-29 5 views
0

Vielleicht nur, dass Freitag Geist ...JS-Methode zeigt nicht definiert, einfaches Beispiel

Hier ist mein Code ..

class LoginScreen extends Component { 

    constructor(props){ 
    super(props); 
    this.state = { 
     isLoading: '' 
    }; 
    } 

    onLoginPressed() { 
    console.log('hit'); 
    this.setState({ isLoading: true }); 
    console.log(this.state); 
    this.onParselUrl('hey'); 
    } 

    onParseUrl(data) { 
    console.log('Parse URL hit'); 
    console.log(data); 
    } 
} 

Dies ist der Abschnitt von meiner Reaktion native App.

Ich rufe this.onLoginPressed.bind(this) und ich bekomme die erste hit in der Konsole. Wenn ich versuche, es zur zweiten Methode onParseUrl zu verketten, erhalte ich Fehler.

Ich habe versucht this.onParseUrl und onParseUrl und ich habe es versucht mit und ohne params zur Verfügung.

ReactNative wirft sich wie ...

this.onParseUrl is not a function. (In 'this.onParseUrl('hey')', 'this.onParseUrl' is undefined)

verwirrt etwas, ich bin sicher, dass ich etwas Grundsätzliches bin fehlt!

Prost

+0

Sind Sie sicher, dass dies Ihre Komponente? Das ist das häufigste Problem mit 'this' in JS, aber ich bin mir nicht sicher, ob React native etwas zur Behebung tut. – ssube

Antwort

1

Sie haben einen Tippfehler

this.onParselUrl("hey"); 

sollte auch

this.onParseUrl("hey"); 

sein, Code läuft nach this.setState() ist gefährlich und sollte vermieden werden: setState Trigger() ein erneutes Rendering Ihrer Komponente, so dass die Ausführung von beliebigem Code nicht gewährleistet ist.

+1

In der Frage hat die Fehlermeldung richtig geschrieben, aber ich wette, es ist der Tippfehler. Der Fehlertyp stimmt mit dem Tippfehler überein. BTW: Das Ausführen von Code nach 'this.setState()' ist gefährlich und sollte vermieden werden: 'setState()' löst ein erneutes Rendern der Komponente aus, sodass die Ausführung von Code nach der Ausführung nicht garantiert werden kann. – wintvelt

+0

Danke Jungs, perfekt! Danke für die heads up auch @wintvelt - Freitag Nacht Codierung nicht so auf dem neuesten Stand, sicher, dass es automatisch vervollkommnet ... –