我试图从自由职业者api中获取作业列表,并显示作业列表,并能够保存这些作业。在此过程中,我将维护savedGigs数组,将保存的项推送到数组中。我收到了一个错误:
savedGigs.forEach不是一个函数。
这件事需要帮助。
checkIfGigIsSaved = (savedGigs, freelancerGigId) => {
let isLiked = false;
savedGigs.forEach(gigItem => {
if (gigItem.gigId === freelancerGigId && !isLiked) {
isLiked = true;
}
});
return isLiked;
}
componentDidMount() {
let interval = window.setInterval(() => {
if (uid !== null) {
clearInterval(interval);
const promise1 = this.fetchSavedGigs();
const promise2 = this.fetchFreelancerJobs();
let currentState = this.state;
Promise.all([promise1, promise2]).then(values => {
const savedGigs = values[0];
const freelancerJobs = values[1].data.result.projects;
freelancerJobs.forEach(project => {
currentState.listOfJobs.push({
bid_avg: project.bid_stats.bid_avg,
bid_count: project.bid_stats.bid_count,
budget_minimum: project.budget.minimum,
budget_maximum: project.budget.maximum,
frontend_project_status: project.frontend_project_status,
time_submitted: project.time_submitted,
title: project.title,
type: project.type,
preview_description: project.preview_description,
id: project.id,
isLiked: this.checkIfGigIsSaved(savedGigs, project.id)
});
});
this.setState({
listOfJobs: currentState.listOfJobs,
isFreelancerApiSuccess: true,
freelancerApiInProgress: false,
savedGigs: savedGigs
});
});
}
}, 250);
}values[0]是对象数组,如
[ { gigId: 18489216, rank: 1 }, { gigId: 18489200, rank: 2 }, { gigId: 18489102, rank: 3 } ]如果这有帮助的话,value[1]就是来自免费的lancer的响应。我不能把所有的回复都发出去
发布于 2019-01-09 09:38:27
我经常看到这种调试技术,人们会得到像现在这样的错误,并且假设javascript在某个地方出错了。您没有拼错.forEach,也没有拼写变量名。那么剩下的就是savedGigs不是一个数组。
我知道,我知道,你认为是的。
但事实并非如此,这正是savedGigs.forEach is not a function.非常清楚的错误所在。
它可能非常类似于数组,比如一个包含数组的属性的对象(例如。{ data: [...] })。
要确保,请在发生错误的地方之前记录数据。你会发现它确实不是一个数组。
checkIfGigIsSaved = (savedGigs, freelancerGigId) => {
let isLiked = false;
// Log **right here**, which is important to get the exact value before the error
console.log('savedGigs:', savedGigs);
savedGigs.forEach(gigItem => {我希望您能用这些步骤解决这个问题,因为您似乎已经从一个不同的变量中提取了数据。我想说明的是,如果您得到了这个错误,原因是变量是,实际上不是数组。不管你多么期望它是一个数组,如果你得到这个错误,它不是。
https://stackoverflow.com/questions/54105008
复制相似问题