如何正确地将data.map转换为Object.keys?

时间:2019-03-17 18:58:10

标签: react-native

我有一组数据。我使用了data.map的7个项目。我在Firebase上加载了这个数组,现在我不能这样称呼它。因为这不是对象中已经存在的数组。

问题。

如何为对象做data.map。而且,我需要传输数据。具体来说:id,name,info,latlng。里面是应该在data.map中的ImageCard。

示例对象:

Object {
  "0": Object {
    "id": 0,
    "image": "/images/Stargate.jpg",
    "info": "Stargate is a 1994 science fiction adventure film released through Metro-Goldwyn-Mayer (MGM) and Carolco Pictures..",
    "latlng": Object {
      "latitude": 53.6937,
      "longitude": -336.1968,
    },
    "name": "Stargate",
    "year": "1994",
  },

建议我使用 Object.keys ,但仍然无法正常工作。 由于它最初是:

const url =""

然后:

try {
      const response = await fetch(url);
      const data = await response.json();

      this.setState({ data });
    } catch (e) {
      throw e;
    }

在render(){:

const { title, data , label } = this.state;

返回:

{data.map(item => (
                    <ImageCard
                      data={item}
                      key={item.id}
                      onPress={() =>
                        navigation.navigate(IMAGEPROFILE, {
                          show: item,
                          onGoBack: this.onGoBack
                        })
                      }
                    />
                  ))}

在图像卡中:

const ImageCard = ({ data, onPress }) => {
  const { image, name, year } = data;

对于Object.keys,我采用如下数据:

firebase
      .database()
      .ref("/events/" )
      .once("value", data => { 
        if(data !== null){
          this.setState({
               data    })
          console.log(data.toJSON())
        }
       })

如何更正我的示例以将data.map转换为Object.keys?

1 个答案:

答案 0 :(得分:2)

使用Object.keys并映射到返回的数组上。

  

Object.keys()方法返回给定对象自己的属性名称的数组,其顺序与我们在普通循环中获得的顺序相同。

{
  Object.keys(data).map(item => ( <
    ImageCard data = { item } key = { item.id } onPress = {
      () =>
      navigation.navigate(IMAGEPROFILE, {
        show: item,
        onGoBack: this.onGoBack
      })
    }
    />
  ))
}