我有一个应用程序,它接收一个名为 user 的对象。用户对象具有从 Firestore 数据库获取信息所需的 userId 信息,无论此人是否为付费会员,会员身份为真或假。如果此人是非付费会员,我想显示一个按钮,如果他是付费会员,我希望不显示该按钮。我遇到的问题是如何从 PaidMembership() 函数返回一个布尔值?
const App = ({ user, database }) => {
const PaidMembership = () => {
var test = null;
docRef.get().then(function(doc) {
if (doc.exists) {
test = doc.data().membership;
//console.log(paidMembership);
} else {
console.log("Error: no such document exists")
test = false;
}
})
return test;
}
return (
{ PaidMembership() ? render : dont render}
)
}
答案 0 :(得分:0)
在状态内制作测试变量并检查
const [test, setTest] = useState(null);
const App = ({ user, database }) => {
const PaidMembership = () => {
docRef.get().then(function(doc) {
if (doc.exists) {
setTest( doc.data().membership);
//console.log(paidMembership);
} else {
console.log("Error: no such document exists")
setTest(null);
}
})
return test;
}
return (
{ test ? "" : <button>show button</button>}
)
}
答案 1 :(得分:0)
这是因为 docRef.get 返回 promise 并且您将其视为正常的函数调用。尝试使用这个:
const App = async ({ user, database }) => {
const PaidMembership = async () => {
const doc = await docRef.get();
return doc.exists;
};
return (await PaidMembership()) ? "render" : "dont render";
};