2016-11-18 1 views
0

Firebase.promise .then( 콜백 내에서 this을 사용하는 데 문제가 있습니다. 여기에 내가 가진 무엇 :Firebase에서 'this'를 사용합니다. React Native로 약속하십시오.

firebase.auth().signInWithEmailAndPassword(this.state.username, 
     this.state.password).then(function (result) { 
      console.log("AUTH OK " + result.provider + " " + result.uid); 
      this.props.navigator.push('main_page'); // Can't do this.. or anything using ''this' 

     }, (error) => { // es6 syntax fat arrow syntax to ensure 'this' is in scope 
     // Handle Errors here. 
     var errorMessage = error.message; 
     this.setState({errorMessage: errorMessage}); 

     } 
    ); 

은 내가 ES (6) 지방 화살표 구문에 대해 알고 있지만 어떤 이유로 다음에 동일한을 사용할 수 없습니다.

다른 누군가가 해결 한 것처럼 보일 수 있지만 아무 것도 찾을 수 없습니다.

답변

3

또한 그렇게 같이 bind 이것을 해결할 수

.then(function() { ... }.bind(this), 
+0

훌륭합니다. 정말 고마워요. –

3

Javascript를 this은 함수의 전류 범위를 의미한다. 다음과 같이 코드를 변경하면

var scope = this; 

firebase.auth().signInWithEmailAndPassword(scope.state.username, scope.state.password).then(function (result) { 
    console.log("AUTH OK " + result.provider + " " + result.uid); 
    scope.props.navigator.push('main_page'); // Can't do this.. or anything using ''this' 
}, (error) => { // es6 syntax fat arrow syntax to ensure 'this' is in scope 
    // Handle Errors here. 
    var errorMessage = error.message; 
    scope.setState({ 
     errorMessage : errorMessage 
    }); 

}); 

이 문제가 없어야합니다.

+0

훌륭합니다 .. 정말 고마워요. –

관련 문제