我收到错误消息“未定义不是对象(正在评估“ 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');
}
});
};
答案 0 :(得分:1)
更改此:
db.ref('admins/').once('value', function(snapshot) {
对此:
db.ref('admins/').once('value', ((snapshot) => {
使用箭头功能使用词法作用域,这意味着在function
外部定义的变量也将在内部相同。
来自docs:
箭头函数本身没有此函数。使用封闭词汇范围的this值;箭头函数遵循正常的变量查找规则。因此,在搜索当前范围中不存在的对象时,箭头功能最终从其所包含的范围中找到了此对象。