RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1605904
Accepted
Enchanting witch
Enchanting witch
Asked:2025-01-30 18:33:53 +0000 UTC2025-01-30 18:33:53 +0000 UTC 2025-01-30 18:33:53 +0000 UTC

数组输出问题[关闭]

  • 772
关闭。这个问题与主题无关。目前不接受对此问题的答复。

寻求调试帮助的问题(“为什么这段代码不起作用? ”)应该包括所需的行为、具体的问题或错误,以及在问题中重现它的最少代码。没有明确问题描述的问题对其他访问者来说是没用的。请参阅如何创建一个最小、独立且可重现的示例。

5 天前关闭。

改进问题

我正在尝试在屏幕上显示一个结构数据数组。问题是我不知道如何输出具有这种结构的数组,其中每个对象都有一个数组系统。它看起来应该类似于 SectionList,但对于 header 和 item 来说,它应该是多个数据的字符串。

实现基于此示例https://reactnativedev.ru/rn/sectionlist/#_1

目前,表单崩溃并出现以下错误:

(NOBRIDGE)错误警告:TypeError:无法读取未定义的属性“length”

请求正确发送,返回数据,数据与json数据类型匹配。但也许问题也出在结构中的“子数组”系统的声明中?

在此之前我尝试通过嵌套的平面列表进行输出,但系统数据并未输出。

import { SectionList,  Text, TouchableOpacity, View } from 'react-native'
import { router } from 'expo-router';

type Structure = {
  id: number;
  comments: number;
  status: string;
  
    systems:[
      id: number,
      numberII: string,
      systemName: string,
    ],
};


const Struct = () => {
  
  const [data, setData] = useState<Structure[]>([]);

  const getStructure = async () => {
      try {
        const response = await fetch('https://...');
        const json = await response.json();
        setData(json);
        console.log('ResponseSeeStructure:', response);
      } catch (error) {
        console.error(error);
      } finally {
      }
    };
  
    useEffect(() => {
      getStructure();
    }, []);


  //const font16 = MonoSizeText(16);
    return(

        <SectionList
            sections = {data}
            keyExtractor={({id}) => id}
                        
             renderSectionHeader={({section: {comments, status}}) => (
                    <View style={{flexDirection: 'row', width: '100%', height: 32, paddingTop: 6, marginBottom: '3%', alignSelf: 'center', }}>

                      <View style={{width: '23%'}}>
                      <Text style={{ fontSize: 14, color: '#334155', textAlign: 'center' }}>{comments}</Text>
                      </View>

                      <View style={{width: '42%'}}>
                      <Text style={{ fontSize: 14, color: '#334155', textAlign: 'center' }}>{status}</Text>
                      </View>

                    </View>
                   )}
                
                  
                    renderItem={({item: {systems}}) => (

                      <TouchableOpacity onPress={() =>{ router.push('/structures/system')}}>
                      <View style={{ alignSelf: 'center',   backgroundColor: '#E0F2FE', flexDirection: 'row', width: '98%', height: 32, marginBottom: 41, borderRadius: 8}}>
            
                        <View style={{width: '10%',  justifyContent: 'center',}}>
                        <Text style={{ fontSize:14, color: '#334155', textAlign: 'center' }}>{systems.numberII}</Text>
                        </View>
                        
                        <View style={{width: '25%',  justifyContent: 'center',}}>
                        <Text style={{ fontSize: 14, color: '#334155', textAlign: 'center' }}>{systems.systemName}</Text>
                        </View>

                      </View>
                      </TouchableOpacity>

                    )}
        />
    );
  };

export default Struct;```
javascript
  • 1 1 个回答
  • 54 Views

1 个回答

  • Voted
  1. Best Answer
    MrFylypenko
    2025-01-30T21:52:35Z2025-01-30T21:52:35Z

    renderItem 的文档说明:'item' (объект) — объект элемента, указанный в ключе data этого раздела.

    因此,该对象必须有一个数据数组,并且不能被命名为其他任何名称。这是一种不寻常的行为,但这就是它的工作原理。

    下面我添加了修改后的代码,它对我有用。如果将其重命名data为systems,则会出现错误Cannot read property 'length' of undefined

    import React, {useState} from 'react';
    import {
      StyleSheet,
      Text,
      View,
      SafeAreaView,
      SectionList,
      StatusBar,
      TouchableOpacity
      
    } from 'react-native';
    
    const DATA= [{
        "id": 1,
        "comments": 2,
        "status" : "success",
        "data": [  // только data, systems или другое название поля не подойдет
            {
                "id": 1,
                "numberII" : "01",
                "systemName": "name"
            }
        ]
    }];
    
    const App = () => (
       <SectionList
                sections = {DATA}
                keyExtractor={({id}) => id}
                            
                 renderSectionHeader={({section: {comments, status}}) => (
                        <View style={{flexDirection: 'row', width: '100%', height: 32, paddingTop: 6, marginBottom: '3%', alignSelf: 'center', }}>
    
                          <View style={{width: '23%'}}>
                          <Text style={{ fontSize: 14, color: '#334155', textAlign: 'center' }}>{comments}</Text>
                          </View>
    
                          <View style={{width: '42%'}}>
                          <Text style={{ fontSize: 14, color: '#334155', textAlign: 'center' }}>{status}</Text>
                          </View>
    
                        </View>
                       )}
                    
                      
                        renderItem={({item}) => (
    
                          <TouchableOpacity onPress={() =>{ router.push('/structures/system')}}>
                          <View style={{ alignSelf: 'center',   backgroundColor: '#E0F2FE', flexDirection: 'row', width: '98%', height: 32, marginBottom: 41, borderRadius: 8}}>
                
                            <View style={{width: '10%',  justifyContent: 'center',}}>
                            <Text style={{ fontSize:14, color: '#334155', textAlign: 'center' }}>{item.numberII}</Text>
                            </View>
                            
                            <View style={{width: '25%',  justifyContent: 'center',}}>
                            <Text style={{ fontSize: 14, color: '#334155', textAlign: 'center' }}>{item.systemName}</Text>
                            </View>
    
                          </View>
                          </TouchableOpacity>
    
                        )}
            />
            );
    
    export default App;
    
    • 1

相关问题

  • 第二个 Instagram 按钮的 CSS 属性

  • 由于模糊,内容不可见

  • 弹出队列。消息显示不正确

  • 是否可以在 for 循环中插入提示?

  • 如何将 JSON 请求中的信息输出到数据表 Vuetify vue.js?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5