1 回答

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
您遇到的問題是arrayRemove()使用嚴(yán)格相等來比較數(shù)組元素并確定要?jiǎng)h除的元素,它不會(huì)像您在代碼中所做的那樣比較“ids”。不幸的是,這意味著每個(gè)對(duì)象都將被視為與其他所有對(duì)象不同(無論是不同的 id 還是相同的 id),無論它們有多相同,({} === {} //false),因此它找不到要?jiǎng)h除的元素。arrayRemove()使用包含基本類型的數(shù)組會(huì)更好:(數(shù)字、字符串等)。
就目前而言,您最好的選擇是獲取現(xiàn)有文檔,使用您的“id”邏輯刪除所需的元素并將其寫回。像這樣:
const removeGoalHandler = async (goalId) => {
const existingDoc = await loansRef.doc(userId).get();
const goals = existingDoc.data().goals.filter(goal => goal.id !== goalId);
await loansRef.doc(userId).update({ goals });
setCourseGoals(goals);
...
};
添加回答
舉報(bào)