Как преобразовать массив объекта в данные Flatlist - React Native - PullRequest
0 голосов
/ 28 июня 2019

Я хочу отобразить плоский список всех контактов телефона.Теперь у меня есть массив объектов, но плоский список не работает с объектами.Я перепробовал много вещей, найденных в сети, но тщетно ...

Я все еще получаю эту ошибку: Инвариантное нарушение: Пытался получить кадр для индекса вне диапазона NaN.

Что яесть сейчас: Array [Object {"name": "toto", "id": 550, ...}, ...]

То, что я хотел бы это: Array [{name: "toto", id: 550, ...}, ...]

Мой код:

async getContactAsync() {
    // permissions

    // Get all contacts from device
    const { data: contacts } = await Contacts.getContactsAsync({
      fields: [
        Contacts.Fields.id,
        Contacts.Fields.name,
        Contacts.Fields.firstName,
        Contacts.Fields.lastName,
        Contacts.Fields.phoneNumbers
      ]
    });

    if (contacts.length > 0) {
      return contacts;
    }
  }

  keyExtractor = (item, index) => index.toString()

  renderItem = ({ item }) => (
    <ListItem
      title={item.name}
      ...
      }
    />
  )

  render () {
    return (
      <FlatList
        keyExtractor={this.keyExtractor}
        data={this.getContactAsync()}
        renderItem={this.renderItem}
      />
    )
  }

1 Ответ

0 голосов
/ 28 июня 2019

вы можете попробовать это в вашем состоянии if

if (contacts.length > 0){
       return contacts.map(item => {...item})
}
...