目前,我正在开发移动应用。我需要将联系人从手机拉到正在创建的应用程序中(我使用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>
)
答案 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,您需要自己按自己想要的顺序对它们进行排序。