Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将对象(数据库中的数据)转换为数组,并在模拟器上显示其中一个键_Javascript_Firebase_React Native_React Native Flatlist - Fatal编程技术网

Javascript 如何将对象(数据库中的数据)转换为数组,并在模拟器上显示其中一个键

Javascript 如何将对象(数据库中的数据)转换为数组,并在模拟器上显示其中一个键,javascript,firebase,react-native,react-native-flatlist,Javascript,Firebase,React Native,React Native Flatlist,因此,我试图将我的Firebase数据库呈现到Android模拟器上,它显示了一个错误,解决方案是将对象转换为数组,但我不知道如何 import _ from 'lodash'; import React, {Component} from 'react'; import {connect} from 'react-redux'; import {FlatList, View, Text} from 'react-native'; import {employeesFetch} from '..

因此,我试图将我的Firebase数据库呈现到Android模拟器上,它显示了一个错误,解决方案是将对象转换为数组,但我不知道如何

import _ from 'lodash';
import React, {Component} from 'react';
import {connect} from 'react-redux';
import {FlatList, View, Text} from 'react-native';
import {employeesFetch} from '../actions';
import ListItem from './ListItem';

class EmployeeList extends Component {
    componentDidMount(){
        this.props.employeesFetch();
}

renderRow(employee) {
            return <ListItem employee={employee}/>;
    };

    render(){
        console.log(this.props.employees);
        return (
            <View>
                <FlatList
                data={Object.keys(this.props.employees)}
                renderItem={this.renderRow}
                />
            </View>
        );
    }
}

const mapStateToProps = state => {
    const employees = _.map(state.employees, (val, uid) => {
        return { ...val, uid };
    });

    return { employees };
};

export default connect(mapStateToProps, { employeesFetch })(EmployeeList);

从“lodash”导入; 从“React”导入React,{Component}; 从'react redux'导入{connect}; 从“react native”导入{FlatList,View,Text}; 从“../actions”导入{employeesFetch}; 从“./ListItem”导入ListItem; 类EmployeeList扩展了组件{ componentDidMount(){ this.props.employeesFetch(); } renderRow(员工){ 返回; }; render(){ console.log(this.props.employees); 返回( ); } } 常量mapStateToProps=状态=>{ const employees=uu.map(state.employees,(val,uid)=>{ 返回{…val,uid}; }); 返回{雇员}; }; 导出默认连接(MapStateTops,{employeesFetch})(EmployeeList); MapStateTops助手应该创建一个名为employees的变量(如果我没有错,我只是在学习编码),但当我这样写的时候:

<FlatList
data=employees
renderItem={this.renderRow}
/>

它说员工没有定义。以防万一,我将添加ListItem文件以显示我在那里所做的工作

import React, {Component} from 'react';
import {Text} from 'react-native';
import {CardSection} from './common';

class ListItem extends Component {
  render () {
    const { name } = this.props.employee;

    return (
      <CardSection>
        <Text style={styles.titleStyle}>
          {name}
        </Text>
      </CardSection>
    );
  }
}
export default ListItem;
import React,{Component}来自'React';
从“react native”导入{Text};
从“/common”导入{CardSection};
类ListItem扩展组件{
渲染(){
const{name}=this.props.employee;
返回(
{name}
);
}
}
导出默认列表项;

我希望输出是一个在屏幕上显示员工(记录在Firebase数据库中)的列表,但显示了一个错误:不变冲突:对象作为React子对象无效(找到:具有键{name,phone,shift,uid}的对象)。如果要呈现子对象集合,请改用数组。

还原程序的初始状态是什么?空对象我想我看到了renderRow函数中的一个问题。似乎您正试图从函数接收的对象中获取属性“item”,并在“Text”标记中打印出来。试着打印“item.somePropHere”,看看如果它破坏了某些东西会发生什么。然后从{item}参数中删除花括号,你将把完整的对象放入该函数中,你可以像“item”一样访问它。somePropHere“自从我创建了一个单独的文件(我将更新帖子)后,我更改了代码,现在它做得很好:它显示了每个“ListItem”组件,但没有显示员工的姓名。