Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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 object.entries要求输入参数不能为null或未定义?_Javascript_Reactjs_React Native_Object_Mobile Development - Fatal编程技术网

Javascript object.entries要求输入参数不能为null或未定义?

Javascript object.entries要求输入参数不能为null或未定义?,javascript,reactjs,react-native,object,mobile-development,Javascript,Reactjs,React Native,Object,Mobile Development,我是react本地开发和使用expo cli的新手。我添加了一个react本机表组件,它工作正常,但现在我正在调用API,但我面临着这个错误 object.entries要求输入参数不能为null或未定义 表由for循环动态创建。正如您在下面的代码中看到的: import React, {useEffect, useState} from 'react'; import { StyleSheet, View,Text, ScrollView } from 'react-native'; impo

我是react本地开发和使用expo cli的新手。我添加了一个react本机表组件,它工作正常,但现在我正在调用API,但我面临着这个错误

object.entries要求输入参数不能为null或未定义

表由for循环动态创建。正如您在下面的代码中看到的:

import React, {useEffect, useState} from 'react';
import { StyleSheet, View,Text, ScrollView } from 'react-native';
import { Table, TableWrapper, Row } from 'react-native-table-component';
import Constants from 'expo-constants';
import Header  from './header';
import axios from 'react-native-axios';
 
const AllData = ({navigation}) => {
    const [dataCSV, setData] =useState([]);
    const pressHandler = ()=>{
        navigation.toggleDrawer();
      }

    useEffect(()=>{
      loadData();
    },[])

    const loadData = async () =>{
      const result = await axios.get("https://hebruapp.herokuapp.com/api/hebru/");
      setData(result.data);
    }


  const state = {
    tableHead: ['שם_מכשיר', 'מספר_סידורי', 'סטטוס', 'גרסת_תוכנה', 'תוכנה', 'מודל', 'גרסת_קושחה', 'הגדרות_תקשורת', 'קוד_איתחול_פינפד','מספר_מסוף','מספר_מסוף',
    'מספר_מוטב',
    'מספר_קופה',
    'שם_בית_העסק',
    'מספר_עוסק',
    'מספר_עוסק_בסליקה',
    'סניף',
    'משווק',
    'תאריך_הקמה',
    'תאריך_גישה_אחרונה_למערכת',
    'איש_קשר',
    'טלפון_איש_קשר',
    'כתובת_מלא'],
    widthArr: [40, 60, 80, 100, 120, 140, 160, 180, 200,180,180,180,180,180,180,180,180,180,180,180,180,180,]
  }
  const tableData = [];
  for (let i = 0; i < 30; i += 1) {
      const rowData = [];
      for (let j = 0; j < 22; j += 1) {
        for (let [key, value] of Object.entries(dataCSV[j])) {
          rowData.push(`${value}`);
        }
      }
      tableData.push(rowData);
    }

    return (
<View>
<Header onPress={pressHandler} title="All Data" />
<View style={styles.containerDatatable}>
        <ScrollView horizontal >
          <View>
            <Table borderStyle={{borderWidth: 1, borderColor: '#C1C0B9'}}>
              <Row data={state.tableHead} widthArr={state.widthArr} style={styles.header} textStyle={styles.text}/>
            </Table>
            <ScrollView style={styles.dataWrapper}>
              <Table borderStyle={{borderWidth: 1, borderColor: '#C1C0B9'}}>
                {
                  tableData.map((rowData, index) => (
                    <Row
                      key={index}
                      data={rowData}
                      widthArr={state.widthArr}
                      style={[styles.row, index%2 && {backgroundColor: '#F7F6E7'}]}
                      textStyle={styles.text}
                    />
                  ))
                }
              </Table>
            </ScrollView>
          </View>
        </ScrollView>
      </View>
</View>
    )
}

const styles = StyleSheet.create({
  containerDatatable: { padding: 16, paddingTop: 10, backgroundColor: '#fff' },
  header: { height: 50,backgroundColor: "radial-gradient(ellipse at left bottom,    rgb(163, 237, 255) 0%,    rgba(57, 232, 255, 0.9) 59%,    rgba(48, 223, 214, 0.9) 100% )",  },
  text: { textAlign: 'center', fontWeight: '100' },
  dataWrapper: { marginTop: -1 },
  row: { height: 40, backgroundColor: '#E7E6E1' },
  dataHeading:{textAlign:'center', fontWeight:'bold', marginBottom:10}

});

export default AllData;
传递j
dataCSV[j]
的索引值时的行


如何解决此问题?

您的
dataCSV
初始值是
[]
。使用该值的代码从不检查
dataCSV
的长度,它只是从0到21(包括0)<当
dataCSV
[]
未定义的
时,code>dataCSV[0]
,该值不是传递给
对象的有效值。条目

解决办法是不这样做。您不这样做的具体方式取决于代码整体应该做什么,但其中一种方法是向循环中添加边界检查:

for (let j = 0, len = Math.min(22, dataCSV.length); j < len; j += 1) {
// −−−−−−−−−−−^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^−−−−−−^^^
for(设j=0,len=Math.min(22,dataCSV.length);j
for(让i=0;i<30;i+=1){const rowData=[];for(让j=0,len=Math.min(22,dataCSV.length);j
${value}
);}tableData.push(rowData);}
你说我需要这样做吗
for (let j = 0, len = Math.min(22, dataCSV.length); j < len; j += 1) {
// −−−−−−−−−−−^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^−−−−−−^^^