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

yyhrrdl8  于 2023-05-28  发布在  React
关注(0)|答案(2)|浏览(132)

我有一个应用程序,它接受一个名为user的对象。user对象具有userId信息,如果该人是付费会员,则需要从firestore数据库获取信息,membership为true或false。如果这个人是一个非付费会员比我想显示一个按钮,如果他是一个付费会员,比我想按钮不显示。我遇到的问题是如何从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}
       )
    }
nmpmafwu

nmpmafwu1#

使测试变量处于状态并检查

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

2skhul332#

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

相关问题