使用状态时在响应本机中得到未定义的对象错误?

时间:2019-11-18 08:28:23

标签: javascript firebase react-native firebase-realtime-database react-native-firebase

我收到错误消息“未定义不是对象(正在评估“ this.state.user”)) 通过按钮调用登录功能时。 this.state.user的值来自使用 onchangeText方法。请帮忙。 该函数位于firebase value事件中。

constructor(props) {
    super(props);
    this.state = { user: '', password: '' };
}

login = () => {
    db.ref('admins/').once('value', function(snapshot) {
        var user = snapshot.child('user_1').val();
        if (this.state.user == user) {
            this.props.navigation.navigate('FACULTYUI');
        }
    });
};

1 个答案:

答案 0 :(得分:1)

更改此:

db.ref('admins/').once('value', function(snapshot) {

对此:

db.ref('admins/').once('value', ((snapshot) => {

使用箭头功能使用词法作用域,这意味着在function外部定义的变量也将在内部相同。

来自docs

  

箭头函数本身没有此函数。使用封闭词汇范围的this值;箭头函数遵循正常的变量查找规则。因此,在搜索当前范围中不存在的对象时,箭头功能最终从其所包含的范围中找到了此对象。