为什么我的 react native 函数总是返回 undefined?

迈克尔·霍夫勒

我正在使用 react native 并且我刚刚将一些数据库函数迁移到了一个单独的文件,而不是仅仅将它们放在我需要它们的文件中(我已经开始需要在多个文件中使用相同的函数,我宁愿有它们都在一个地方)。问题是,应该将一次性键与数据库中的键进行比较的函数总是返回undefined

我尝试过返回函数而不是布尔值,并尝试使用“async/await”关键字(我对此知之甚少)。

这是我的代码...

/project/src/components/Database.js

var firebase = require('firebase');

if (!firebase.apps.length) {
    firebase.initializeApp({
        apiKey: "key",
        authDomain: "domain",
        databaseURL: "url",
        storageBucket: "bucket",
    });
}

class Database {
    constructor() {
      this.codesRef = firebase.database().ref('codes');
    }
    isValidCode(text) {
        let codeIsFound = false;
        let identifier = "";
        this.codesRef.once('value', (db_snapshot) => {
          db_snapshot.forEach((code_snapshot) => {
            //console.log(text, code_snapshot.val().value, text == code_snapshot.val().value);
            if (text == code_snapshot.val().value) {
              codeIsFound = true;
              identifier = code_snapshot.key;
            }
          });
          //console.log(codeIsFound); // this is correct
          return codeIsFound; // this always returns undefined
        });
    };
}

module.exports = Database;

/project/src/components/forms/KeyForm.js

import React from 'react';
import {
  StyleSheet,
  View,
  TextInput,
} from 'react-native';

import { withNavigation } from 'react-navigation';

import database from '../Database.js';

const db = new database();


class LoginForm extends React.Component {
  constructor(props) {
    super(props);
  }

  render() {
    return (
      <View style={styles.container}>
        <TextInput
          style={styles.input}
          placeholder="Access Code"
          returnKeyType="go"
          onSubmitEditing={text => {console.log(db.validCode(text.nativeEvent.text))}} // "undefined"
          autoCapitalize="none"
          autoCorrect={false}
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({\
  // yay styles :)
});

export default withNavigation(LoginForm);

每当我在 firebase “once” 函数之后放置一个 return 语句时,它都会返回一个布尔值,但由于某种原因,它总是错误的。任何帮助是极大的赞赏!

兰迪·卡斯本

解决这个问题:每当我在 firebase “once” 函数之后放置一个 return 语句时,它都会返回一个布尔值,但由于某种原因,它总是错误的。

通过删除.once()方法代码,您可以清楚地看到为什么会这样。代码完全按照如下方式执行。由于该.once()方法的异步性质,该return语句在.once()解析(完成)之前执行

isValidCode(text) {
  let codeIsFound = false;
  let identifier = "";
  // .once() goes here
  return codeIsFound;
};

你的直觉是关于 async/await 的一个很好的直觉。要解决您的问题,请执行以下操作:

async isValidCode(text) {
  let codeIsFound = false;
  let identifier = "";
  let db_snapshot = await this.codesRef.once('value');
   db_snapshot.forEach(code_snapshot => {
       if (text == code_snapshot.val().value) {
          codeIsFound = true;
          identifier = code_snapshot.key;
        }
   });
   return codeIsFound; 
};

然后,该函数将返回一个将被解析(或拒绝)的承诺。因此,要使用此代码,请执行以下操作:

isValidCode('something').then(result => {
   /* use result here */
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么此函数总是返回0

来自分类Dev

为什么我的代码总是以undefined结尾?

来自分类Dev

AsyncStorage.getItem返回undefined:React Native

来自分类Dev

Realm React-Native ListView中链接对象的属性返回undefined(错误:undefined不是对象)

来自分类Dev

React Native-为什么我需要babel或webpack?

来自分类Dev

为什么返回结果的函数总是返回Err?

来自分类Dev

为什么我的函数总是返回相同的值?

来自分类Dev

为什么我的AsyncValidator总是返回true?

来自分类Dev

为什么我的if语句在React中总是给出相同的结果?

来自分类Dev

为什么我的react-query突变总是“成功”?

来自分类Dev

为什么我的React-Native组件无法渲染?

来自分类Dev

Javascript函数返回undefined,为什么?

来自分类Dev

为什么此函数总是返回零?

来自分类Dev

为什么我的代码总是返回1?

来自分类Dev

为什么我的WebMethod总是返回JSON?

来自分类Dev

为什么我的dllimport函数总是返回true?

来自分类Dev

为什么我需要的外部文件在React Native中被忽略?

来自分类Dev

React Native undefined不是函数错误

来自分类Dev

为什么 typeof 执行的函数返回 undefined

来自分类Dev

为什么我的 setTimeout 功能在我使用 react-native 和 react-router-native 时不起作用

来自分类Dev

为什么我的 getColor 函数总是返回 false?

来自分类Dev

为什么我不能在我的 React Native 组件中使用 connect?

来自分类Dev

React native undefined 不是函数

来自分类Dev

为什么我在使用这个函数时得到 undefined?

来自分类Dev

为什么我不能运行 React Native 项目(转换错误)

来自分类Dev

为什么这个 javascript 函数返回 undefined ?

来自分类Dev

为什么我应该使用 redux react native?

来自分类Dev

为什么这个函数总是返回 0

来自分类Dev

React Native SDK 的使用方法返回 undefined

Related 相关文章

  1. 1

    为什么此函数总是返回0

  2. 2

    为什么我的代码总是以undefined结尾?

  3. 3

    AsyncStorage.getItem返回undefined:React Native

  4. 4

    Realm React-Native ListView中链接对象的属性返回undefined(错误:undefined不是对象)

  5. 5

    React Native-为什么我需要babel或webpack?

  6. 6

    为什么返回结果的函数总是返回Err?

  7. 7

    为什么我的函数总是返回相同的值?

  8. 8

    为什么我的AsyncValidator总是返回true?

  9. 9

    为什么我的if语句在React中总是给出相同的结果?

  10. 10

    为什么我的react-query突变总是“成功”?

  11. 11

    为什么我的React-Native组件无法渲染?

  12. 12

    Javascript函数返回undefined,为什么?

  13. 13

    为什么此函数总是返回零?

  14. 14

    为什么我的代码总是返回1?

  15. 15

    为什么我的WebMethod总是返回JSON?

  16. 16

    为什么我的dllimport函数总是返回true?

  17. 17

    为什么我需要的外部文件在React Native中被忽略?

  18. 18

    React Native undefined不是函数错误

  19. 19

    为什么 typeof 执行的函数返回 undefined

  20. 20

    为什么我的 setTimeout 功能在我使用 react-native 和 react-router-native 时不起作用

  21. 21

    为什么我的 getColor 函数总是返回 false?

  22. 22

    为什么我不能在我的 React Native 组件中使用 connect?

  23. 23

    React native undefined 不是函数

  24. 24

    为什么我在使用这个函数时得到 undefined?

  25. 25

    为什么我不能运行 React Native 项目(转换错误)

  26. 26

    为什么这个 javascript 函数返回 undefined ?

  27. 27

    为什么我应该使用 redux react native?

  28. 28

    为什么这个函数总是返回 0

  29. 29

    React Native SDK 的使用方法返回 undefined

热门标签

归档