迭代此数据并呈现节标题和项目的正确方法?

Posted

技术标签:

【中文标题】迭代此数据并呈现节标题和项目的正确方法?【英文标题】:Correct way to iterate this data and render section headers and items? 【发布时间】:2018-02-26 14:46:25 【问题描述】:

我的 JSON 响应如下所示

我想将名称(即意大利面/比萨)呈现为标题(可以折叠或打开)以及项目,即相应类别中的比萨/意大利面类型。 我正在使用本机反应,我尝试使用地图和 ListView

return (this.props.item.items.map((res) => 
    console.log(res);
    return (
      <View>
          <View style=CardContainer>
            <Text>res.title</Text>
            <Image
            source= uri: res.photo 
            style=imageStyle
            />
          </View>
      </View>
    );
  )
);

但它们返回单个对象,因此当我将 onPress 事件与类别(即意大利面)相关联时,它会注册两次,这是不可取的,因为单击意味着扩展该类别(即意大利面)。

如果我应该更改 JSON 结构以使其高效,请告诉我,这是菜单卡的 JSON 响应

编辑:我尝试了以下但无法显示结果

renderItem() 
return (
<View>

  this.props.menu.map(( name, items ) => 
      <View>
        <Text>name</Text>
      </View>
    items.map((resp) => 
      <View>
        <Text>resp.title</Text>
      </View>
    );
  )

</View>
);

【问题讨论】:

【参考方案1】:
<View>
  this.props.item.items.map((res) => (
      <View>
        <Header>
           res.name 
        </Header>
         res.items.map(item => (
          <View style=CardContainer>
            <Text>item.title</Text>
            <Image
            source= uri: item.photo 
            style=imageStyle
            />
          </View>
        )
      </View>
    )))
</View>

IMO,更具可读性

render() 
  const  item:  items: allItems   = this.props;
  return (
    <View>
       allItems.map(( name, items ) => (
        <Header> name </Header>
         items.map(( title, photo ) => (
           <View style=CardContainer>
             <Text>title</Text>
             <Image
               source= uri: photo 
               style=imageStyle
             />
           </View>
        )
      )
    </View>
  )

【讨论】:

我尝试了以下但无法显示。 renderItem() return ( this.props.menu.map(( name, items ) => name items.map(( resp) => resp.title ); ) );

以上是关于迭代此数据并呈现节标题和项目的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章

将 liquibase 添加到现有 Spring Boot 项目的正确方法

在 React 中迭代数据数组时呈现 JSX 元素的最有效方法

在 SwiftUI 列表中呈现来自 Realm 的数据的正确方法是啥

在 SwiftUI 列表中呈现来自 Realm 的数据的正确方法是啥

SwiftUI - 可滚动的 ListView,对象未正确呈现

迭代列表并从中删除项目的最佳方法? [关闭]