如何在反应中从自定义函数返回布尔值

时间:2021-01-21 02:28:30

标签: reactjs

我有一个应用程序,它接收一个名为 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}
       )
    }

2 个答案:

答案 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";
};