登录功能后,我试图在“主页”路线上导航,并且尝试在登录中集成导航功能,但出现错误“无法读取未定义错误的属性”导航”。
loginUser = (email, password) => {
try {
firebase
.auth()
.signInWithEmailAndPassword(email, password)
.then(function(user) {
this.props.navigation.navigate("Home");
});
} catch (error) {
console.log(error.toString());
}
};
我也曾尝试使用() => this.props.navigation.navigate("Home");
用户,但没有任何反应。
我的路线运行正常,因为如果我使用onPress函数创建一个简单的按钮,则运行正常。
<Button title="Go to Login" onPress={() => this.props.navigation.navigate("Login")} />
能给我一些提示吗?登录成功后如何导航到首页?
提前谢谢!
答案 0 :(得分:1)
尝试console.log(this)。我想因为您在promise中创建了一个新函数,所以它的范围已更改。try
loginUser = (email, password) => {
let that = this;
try {
firebase
.auth()
.signInWithEmailAndPassword(email, password)
.then(function(user) {
that.props.navigation.navigate("Home");
});
} catch (error) {
console.log(error.toString());
}
};
答案 1 :(得分:1)
在您使用function(){}语法和箭头函数语法时,您正在更改 this (在this.props中)的词法范围承诺链。
如果将功能更改为箭头功能,则将保留外部范围,并可以访问 this 。
例如
.then((user) => {
that.props.navigation.navigate("Home");
});