开发者问题收集

导航 - 无法读取未定义的属性“导航”

2019-06-06
248

我尝试在登录功能后在“主页”路由上导航,并尝试在登录中集成导航功能,但出现错误“无法读取未定义错误的属性‘导航’”。

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="转到登录" onPress={() => this.props.navigation.navigate("Login")} />

你能给我一些提示吗?在 react-native 中登录成功后如何导航到主页?

提前谢谢您!

2个回答

当您在承诺链中使用 function() {} 语法而非箭头函数语法时,您正在更改 this 的词法范围(在 this.props 中)。

如果将函数更改为箭头函数,您将保留外部范围,并可以访问 this

例如

.then((user) => {
   that.props.navigation.navigate("Home");
});
Paul Patterson
2019-06-06

尝试 console.log(this)。我认为是因为您在承诺中创建了一个新函数,所以 this 的范围已经改变。尝试

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()); } };

Devin Gong
2019-06-06