react中如何从自定义函数返回布尔值



我有一个应用程序,在一个名为user的对象。用户对象具有userId信息,如果该人是否是付费会员,则需要从firestore数据库获取信息,会员资格为真或假。如果这个人是一个非付费会员比我要显示一个按钮,如果他是一个付费会员,比我希望按钮不显示。我遇到的问题是如何从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}
)
}

使test变量在状态内并检查

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>}
)
}

这是因为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";
};

最新更新