【问题标题】:How to return value from a react native function?如何从反应本机函数返回值?
【发布时间】:2021-02-12 01:41:44
【问题描述】:

我希望此函数从此函数返回布尔值,但我无法这样做。我是 react native 和 javascript 的新手。

  checkBlocked(userId) {

    firebase.database().ref('Blocked/' + firebase.auth().currentUser.uid)
    .orderByChild('uid').equalTo(userId).once('value').then(snapshot => {

        if (snapshot.exists()){
          var isBlocked = true;
        }
      else {
       var isBlocked = false;
      }
      })

      return isBlocked;

    }

【问题讨论】:

  • 你没有考虑异步。 firebase.database()....once() 返回一个承诺。如果您需要承诺的结果来决定它应该是tru 还是false,您不能只返回truefalse。你必须返回一个用 truefalse 解决的承诺
  • @aligumustosun 给出的下面的答案返回一个用truefalse 解析的Promise。您可以通过在异步函数中等待它或传入 .then 回调来使用该值:checkBlocked(userId).then(val => this val is true or false)
  • @TkoL 谢谢队友,我必须在几个小时内推动这些更改,如果你能在你的答案中编写代码 sn-p 将是一个很大的帮助 我是一个菜鸟。提前谢谢你。
  • 没有足够的上下文让我为你写任何东西。我不知道你在哪里需要结果。

标签: javascript reactjs react-native return boolean


【解决方案1】:
checkBlocked = async userId => {
  try {
  let snapshot = await firebase.database().ref('Blocked/' + firebase.auth().currentUser.uid).orderByChild('uid').equalTo(userId).once('value')
    return snapshot.exists();
  }
  catch(error) {
    return false;
  }
}

【讨论】:

  • 感谢您的回答,实际上我想从此函数返回一个“true”,用于有条件地呈现平面列表。我正在尝试过滤掉被屏蔽用户的帖子。还是达不到。请帮忙!
  • 伙计,我在其他评论中解释说,当涉及异步函数时,您不能简单地返回 truefalse。您无法解决这个问题 - 您必须等待从 api 调用返回的值才能知道它是 true 还是 false
猜你喜欢
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
相关资源
最近更新 更多