gpt4 book ai didi

javascript - 在另一个函数中 react native 故障调用函数?

转载 作者:行者123 更新时间:2023-11-30 11:58:28 25 4
gpt4 key购买 nike

在我的 React-native 应用程序中,我试图在我的 listenForItems 函数中调用另一个函数,但不断收到错误消息 this.populateArray is not a function。在“this.populateArray(solutions)”中,this.populateArray 是未定义的。 我在其他类中这样做并且它正在工作,但由于某种原因它在这里不起作用。有什么我想念的吗?

populateArray: function(solutions) {
var completed = [];
var inProgress;

for (var i = 0; i < solutions.length; i++ ) {
if (solutions[i].completed == 0) {
inProgress = solutions[i].id;
}
else {
completed.push(solutions[i].id);
}
}
},

listenForItems: function(cluesRef) {

var solutions = [];
userSolutionsRef.orderByChild('user_id').startAt(0).endAt(0).once('value', function(snap){
var solution = snap.val();
for (var i = 0; i < solution.length; i++) {
if (solution[0].hunt_id == 0) {
solutions.push(solution[0]);
}
}
this.populateArray(solutions);
});
},

最佳答案

经典的javascript this scope问题。谷歌将帮助更好地理解。简而言之,函数中的“this”一词指的是该函数。在此示例中,它指的是您在 userSolutionsRef.orderByChild 中使用的匿名函数(回调)。有很多方法可以解决这个问题。您可以使用 ES6(ES2015) 箭头函数,在这种情况下它会变成类似

userSolutionsRef.orderByChild('user_id').startAt(0).endAt(0).once('value', (snap) => {
var solution = snap.val();
for (var i = 0; i < solution.length; i++) {
if (solution[0].hunt_id == 0) {
solutions.push(solution[0]);
}
}
this.populateArray(solutions);
});

或者es5解决方案

var that = this;
userSolutionsRef.orderByChild('user_id').startAt(0).endAt(0).once('value', function(snap){
var solution = snap.val();
for (var i = 0; i < solution.length; i++) {
if (solution[0].hunt_id == 0) {
solutions.push(solution[0]);
}
}
that.populateArray(solutions);
});

关于javascript - 在另一个函数中 react native 故障调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37266270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com