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

时间:2019-06-06 09:36:26

标签: reactjs react-native navigation

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

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")} />

能给我一些提示吗?登录成功后如何导航到首页?

提前谢谢!

2 个答案:

答案 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");
});