我真的不太了解React native中变量的范围。
我正在从另一个组件中调用一个函数,并且在该函数中有对该组件的函数的调用,但这似乎超出了该函数的范围:
addKeytoUser = (key, userID) => {
try {
this.collection(`${usrPostsDB}`).doc(`${key}`)
.update(`${likesCol}`, firebase.firestore.FieldValue.increment(1))
.then((result) => {
this.collection(`${usrLikesCol}`).doc(`${userID}`).add(`${key}`);
return result;
});
} catch ({ message }) {
console.log(message);
}
}
collection是实际组件的功能,第一次调用它会返回正确的值,但是在(result)=>内顺序执行后第二次调用它时,则返回this.collection不存在。 如何从.then()=>
调用组件函数谢谢
答案 0 :(得分:0)
您可以将collection
函数传递给addKeyToUser
函数作为道具。看起来像这样:
addKeytoUser = (key, userID, collection) => {
try {
collection(`${usrPostsDB}`).doc(`${key}`)
.update(`${likesCol}`, firebase.firestore.FieldValue.increment(1))
.then((result) => {
collection(`${usrLikesCol}`).doc(`${userID}`).add(`${key}`);
return result;
});
} catch ({ message }) {
console.log(message);
}
}
这也将使您的代码看起来更简洁,更易读。
答案 1 :(得分:0)
您必须绑定addKeytoUser
函数,在像这样的构造函数中this.addKeytoUser = this.addKeytoUser.bind(this);