当前位置: 首页 > 知识库问答 >
问题:

React Native中的2维阵列循环视图

颛孙轩昂
2023-03-14

我是新手反应本机,不知道如何正确循环2维阵列。目前,我在创建简单的flexbox布局循环时遇到了问题,可以从数组中获取数据。

这是我的照片。柔性箱布局

我的第一个循环是针对FlexDirection Row,它循环8个数据,第二个循环是针对列,它循环2个数据。

问题是我不能得到所有的数据,因为主视图在第二个循环上,8个数据中只有2个。

这是我的数据和渲染函数代码。

var menuHome= [
  {menuName:'menu1',menuImage:'image1'},
  {menuName:'menu2',menuImage:'image2'},
  {menuName:'menu3',menuImage:'image3'},
  {menuName:'menu4',menuImage:'image4'},
  {menuName:'menu5',menuImage:'image5'},
  {menuName:'menu6',menuImage:'image6'},
  {menuName:'menu7',menuImage:'image7'},
  {menuName:'menu8',menuImage:'iamge8'}
]
  render() {
      for(i=1;i<=2;i++){

        if(i%2 !== 0){ 
          menuBox2 = 15;
        }else{
          menuBox2 = 0; 
          l+=1;
        }

        menuBlock2.push(
          <TouchableHighlight 
            style={[styles.menuBox, {marginRight:menuBox2},{backgroundColor:this.state.menuBg}]}
            onPress= { () => {} }
            underlayColor="rgba(138,24,27,1)"
            key = {i}
            >
            <View style={[styles.justify]}>
              <SvgUri
                width="50"
                height="50"
                source={require("AwesomeProject/app/images/balance-01.svg")}
                style={styles.images}
              />
              <Text style={[styles.baseText,{color:this.state.menuText}]}>{menuHome[i].menuName}</Text>
            </View>
          </TouchableHighlight>
        )
      }

    for(z=0;z<4;z++){
      menuBlock.push(
        <View style={[styles.mainWrapper, styles.row]} key = {z}>
          {menuBlock2}
        </View>
      )
    }

    return (
      <View style={styles.mainView}>
        {menuBlock}
      </View>
    );
  }

谢谢你们!

共有1个答案

龙永福
2023-03-14

您也可以简单地使用FlatList通过reditem方法属性显示视图,并设置numColumns={2}

 类似资料:
  • 我尝试使用Reform2执行recyclerView,但我在代码中执行了:recyclerView适配器构造函数,并且我在此行的MainActivity部分中得到了一个错误-“(flowersList,this)”:我得到了错误:列出匿名Reform2。回调函数 我的代码我的主要活动是: RecycleServiceWFlowerAdapter中的代码是: } 我在RecycleServiceWh

  • 我是编程新手,我有一个任务要求从一维数组创建二维数组。我想到了这一点(没有任何外部来源的帮助,因为这会剥夺学习经验)。它适用于我们教授的测试输入,我只是想知道这是一个丑陋/低效的解决方案。 测试输入:twoDArray([1,2,3,4,5],3)输出将是:[[1,2,3],[4,5]]

  • 正如标题所问, 假设我有一个(如,,等等),有大量的。 > 这里的情况是,我想使用一个for-each方法对他们所有人做同样的事情。 问题是,当符合条件时,您只能使用方法迭代。 P. S.我知道你可以这样做: 我只需要知道是否有其他方法可以为每个方法使用

  • 我试图理解数组加法CoderByte问题的解决方案中的逻辑。这是问题提示——“使用JavaScript语言,让函数ArrayAdditionI(arr)获取存储在arr中的数字数组并返回字符串true,如果数组中的任何数字组合可以加到等于数组中的最大数字,否则返回字符串false。例如:如果arr包含[4, 6, 23, 10, 1, 3],则输出应该返回true,因为4 6 10 3 = 23。

  • 我对C很陌生,现在就在做中学习。在课堂材料中,我有以下功能: 几分钟前,我像这样使用了普通for循环:

  • 编辑问题以包括所需的行为、特定的问题或错误,以及重现问题所需的最短代码。这将帮助其他人回答这个问题。 为什么下面未注释的代码比注释掉的代码快得多?让我们在这里初学者,老实说,我看不出两者之间的区别。