在React-Native中按字母顺序对联系人排序

时间:2019-03-23 15:17:39

标签: react-native

目前,我正在开发移动应用。我需要将联系人从手机拉到正在创建的应用程序中(我使用expo联系人)。由于某些原因,联系人不是按字母顺序排序,而是按随机顺序显示。

我不太确定如何对联系人进行排序以按字母顺序显示它们。

任何人都可以看一下,让我知道我做错了/应该添加什么吗?

我使用的代码:

// load contacts from phone

_loadContacts = async () => {
    try {
      await Permissions.askAsync(Permissions.CONTACTS);
      const { data: contacts } = await Contacts.getContactsAsync({ fields: [Contacts.Fields.PhoneNumbers] })


 // for rendering contacts 

  _renderContact = ({ item: { firstName, lastName, name, phoneNumbers } }) => (
    <View style={styles.contact}>
      <Text style={styles.contactName}>{name || [firstName, lastName].join(" ")}</Text>
      <Text style={styles.phoneNumbers}> {phoneNumbers ? phoneNumbers.map(entry => entry.number).join(", ") : "undefined"}</Text>
    </View>
  )

1 个答案:

答案 0 :(得分:1)

可以使用Expo对联系人进行排序。它是在2018年8月添加的。https://expo.canny.io/feature-requests/p/sorting-options-for-contacts

如果您选中documentation,则可以看到getContactsAsync占了ContactQuery

ContactQuery(请参阅here)采用SortType(请参阅here),允许您按名字或姓氏对联系人进行排序。

一个简单的例子如下。

 const { data: contacts } = await Contacts.getContactsAsync({ 
    fields: [Contacts.Fields.PhoneNumbers], 
    sort: Contacts.SortTypes.FirstName 
 });

值得注意的是,目前SortType仅适用于Android。因此,对于iOS,您需要自己按自己想要的顺序对它们进行排序。