0

我使用normalizr来规范化基于 id 的 api 响应。所以最终的归一化响应将是

{
  "names": {
    "12": {
      "Name": "ABC",
      "Status": "0",
      "Count": 11,
    },
    "31": {
      "Name": "CDE",
      "Status": "1",
      "Count": 12,
    }
  }
}

我如何在平面列表中使用此名称对象映射。它不是一个数组,而是一个对象映射。
最好的方法是什么?

PS:我知道有 lodash _.values()函数,但我认为它会因为巨大的响应而变慢。

4

1 回答 1

2

首先,您可以更改对象以返回一个数组Object.keys

这是你的数据

{
  "names": {
    "12": {
      "Name": "ABC",
      "Status": "0",
      "Count": 11,
    },
    "31": {
      "Name": "CDE",
      "Status": "1",
      "Count": 12,
    }
  }
}

你可以做

const dataname = data.names
const datanamearr = Object.keys(dataname).map(key => dataname[key])

这将返回一个数组

然后您可以FlatList使用地图功能呈现您的数据

{datanamearr.map((item) =>
    <FlatList
      data={item}
      renderItem={({item}) => <Text>{item.Name}</Text>}
    />
  )
}
于 2017-09-11T12:39:10.520 回答