我在Firebase.promise this
回调中使用.then(
时遇到问题。
这就是我所拥有的:
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胖箭头语法,但由于某种原因,不能使用相同的语法。
这似乎是其他人已经解决的问题,但无法找到任何相关信息。
答案 0 :(得分:3)
您也可以使用bind
解决此问题,如下所示:
.then(function() { ... }.bind(this),
答案 1 :(得分:3)
Javascripts 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
});
});
它应该消除这个问题。