React Native Firebase - 将数据推送到数组,允许在 FlatList 中显示

亚历山大·佐里奇

我是 React Native 的新手,为了让它工作有点挣扎。我在 Firebase 中有包含“机械师”名称的实时数据库。我想检索这些名称并将它们显示在列表中。

在此处输入图片说明

我想在列表中显示此数据,然后在用户单击任一名称时执行某些功能。我想将数据库数据添加到数组中,然后循环遍历数组将其添加到我的 FlatList 中。

现在的问题是,当我执行代码时,this.setState({ mechanicsList: mechanicsTemp });返回错误。

错误

[Unhandled promise rejection: TypeError: this.setState is not a function. 

(In 'this.setState({]
* src\screens\FindMechanics.js:28:30 in <unknown>
- node_modules\promise\setimmediate\core.js:37:14 in tryCallOne
- node_modules\promise\setimmediate\core.js:123:25 in <unknown>
- ... 8 more stack frames from framework internals

完整代码

import React, { Component } from 'react';
import { View, Text, SafeAreaView, TouchableOpacity, ScrollView, StyleSheet } from "react-native";
import { Card } from 'react-native-elements'
import firebase from "firebase/app";

export default class FindMechanics extends Component {
    constructor(props) {
        super(props);
        this.state = {
            mechanicsList: [],
            isDataLoaded: false
        }
    }

    componentDidMount() {
        var query = firebase.database().ref("MechanicList").orderByKey();
        query.once("value")
            .then(function (snapshot) {
                let mechanicsTemp = [];
                snapshot.forEach(function (childSnapshot) {
                    // key will be the auth ID for each user
                    var key = childSnapshot.key;
                    var mechanicName = snapshot.child(key + '/name').val();
                    mechanicsTemp.push({ _name: mechanicName, _key: key });
                });           
                mechanicsList = mechanicsTemp;            
                () => this.setState({ mechanicsList: mechanicsTemp }); // This does not execute it seems - main problem I believe
                //this.setState({ mechanicsList: mechanicsTemp }); - This return a warning 'this.setState is not a function'
                console.log(mechanicsList); //Prints data as expected
                mechanicsTemp.forEach((mechanic) => {
                   console.log( mechanic._name); //Prints data as expected
                });
            });
    }

    render() {
        //The Card element is empty - nothing shows. 
        console.log(this.state.mechanicsList) //This return Array [] which indicates it is empty
        return (
            <SafeAreaView style={styles.container}>
                <ScrollView horizontal={true}>
                    <TouchableOpacity>
                        <Card style={styles.card}>
                            {
                                this.state.mechanicsList.map((u, i) => {
                                    return (
                                        <View key={i}>
                                            <Text>{u._key}</Text>
                                            <Text>{u._name}</Text>
                                        </View>
                                    );
                                })
                            }
                        </Card>
                    </TouchableOpacity>
                </ScrollView>
            </SafeAreaView>
        )
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        alignItems: 'center',
        justifyContent: 'center',
        backgroundColor: '#FFF'
    },
    paragraph: {
        margin: 24,
        fontSize: 18,
        textAlign: 'center',
    },
    card: {
        flex: 1,
        width: '80%',
    },
});

安慰

Finished building JavaScript bundle in 384ms.
Running application on Android SDK built for x86.
Array []
拉维

第一件事,您有mechanics处于状态的对象,因此您需要像这样访问它

console.log(this.state.mechanics)

第二件事是当你有数据时你没有更新状态变量,它应该像下面这样

let mechanicsTemp = [];
snapshot.forEach(function (childSnapshot) {
    // key will be the auth ID for each user
    var key = childSnapshot.key;
    var mechanicName = snapshot.child(key + '/name').val();
    mechanicsTemp.push({_name: mechanicName, _key: key});
});

this.setState({ mechanics:mechanicsTemp })

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React-Native Firebase 使用 FlatList 显示对象数组

来自分类Dev

React Native Flatlist 显示数据

来自分类Dev

react native中Flatlist中firebase firestore的数据不会呈现

来自分类Dev

将数据推送到 React Native 中的数组

来自分类Dev

FlatList 未显示其数据 React Native

来自分类Dev

在 React Native Flatlist 中渲染对象数组

来自分类Dev

在 Flatlist React Native 中显示特定值

来自分类Dev

为什么Firebase中的数据无法在我的FlatList(React Native)中呈现?

来自分类Dev

React Native FlatList 组件数据在 firebase 数据调用后不断刷新,Firebase 数据显示不一致

来自分类Dev

将数组对象渲染到FlatList React Native中

来自分类Javascript

React Native-Firebase onSnaphot + FlatList分页

来自分类Dev

在React Native中搜索FlatList

来自分类Dev

如何在React Native中使用FlatList显示数据?

来自分类Dev

无法在Flatlist react-native上显示json数据

来自分类Dev

React Native FlatList没有显示来自API的数据(axios)

来自分类Dev

如何从 API 中过滤特定数据并将其显示在 React Native Flatlist 中?

来自分类Dev

Flatlist遍历React Native中的嵌套数组

来自分类Dev

在React Native中解析对FlatList的JSON数组响应

来自分类Dev

在React Native中没有使用Flatlist呈现数据

来自分类Dev

React Native 更新纯组件中的 FlatList 数据

来自分类Dev

如何使用 FlatList 在 react-native 中渲染异构数据?

来自分类Dev

如何在 react-native 中刷新 Flatlist 数据?

来自分类Dev

React Native:FlatList没有显示

来自分类Dev

React Native中的FlatList正在呈现但不显示文本

来自分类Dev

FlatList在React Native中未显示任何内容

来自分类Dev

如何获取 json 并在 flatlist 中显示 img (React Native)

来自分类Dev

在 FlatList React Native 中显示 2 个标签

来自分类Dev

如何在React Native中显示来自Firebase Firestore的数据

来自分类Dev

Firebase Firestore - 在 React Native 中显示查询的数据

Related 相关文章

  1. 1

    React-Native Firebase 使用 FlatList 显示对象数组

  2. 2

    React Native Flatlist 显示数据

  3. 3

    react native中Flatlist中firebase firestore的数据不会呈现

  4. 4

    将数据推送到 React Native 中的数组

  5. 5

    FlatList 未显示其数据 React Native

  6. 6

    在 React Native Flatlist 中渲染对象数组

  7. 7

    在 Flatlist React Native 中显示特定值

  8. 8

    为什么Firebase中的数据无法在我的FlatList(React Native)中呈现?

  9. 9

    React Native FlatList 组件数据在 firebase 数据调用后不断刷新,Firebase 数据显示不一致

  10. 10

    将数组对象渲染到FlatList React Native中

  11. 11

    React Native-Firebase onSnaphot + FlatList分页

  12. 12

    在React Native中搜索FlatList

  13. 13

    如何在React Native中使用FlatList显示数据?

  14. 14

    无法在Flatlist react-native上显示json数据

  15. 15

    React Native FlatList没有显示来自API的数据(axios)

  16. 16

    如何从 API 中过滤特定数据并将其显示在 React Native Flatlist 中?

  17. 17

    Flatlist遍历React Native中的嵌套数组

  18. 18

    在React Native中解析对FlatList的JSON数组响应

  19. 19

    在React Native中没有使用Flatlist呈现数据

  20. 20

    React Native 更新纯组件中的 FlatList 数据

  21. 21

    如何使用 FlatList 在 react-native 中渲染异构数据?

  22. 22

    如何在 react-native 中刷新 Flatlist 数据?

  23. 23

    React Native:FlatList没有显示

  24. 24

    React Native中的FlatList正在呈现但不显示文本

  25. 25

    FlatList在React Native中未显示任何内容

  26. 26

    如何获取 json 并在 flatlist 中显示 img (React Native)

  27. 27

    在 FlatList React Native 中显示 2 个标签

  28. 28

    如何在React Native中显示来自Firebase Firestore的数据

  29. 29

    Firebase Firestore - 在 React Native 中显示查询的数据

热门标签

归档