#react-native
#react-native
Вопрос:
В настоящее время я работаю над мобильным приложением. Мне нужно перенести контакты со своего телефона в приложение, которое я создаю (я использую expo contacts). По какой-то причине вместо того, чтобы сортировать контакты в алфавитном порядке, они отображаются в случайном порядке.
Я не совсем уверен, как сортировать контакты, чтобы отображать их в алфавитном порядке.
Может кто-нибудь, пожалуйста, взглянуть и сообщить мне, что я делаю не так / что я должен добавить?
Код, который я использую:
// 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. Какова структура данных контактов??
Ответ №1:
Можно сортировать контакты с помощью Expo. Это было добавлено в августе 2018 года. https://expo.canny.io/feature-requests/p/sorting-options-for-contacts
Если вы проверите документацию, вы увидите, что для этого getContactsAsync
требуется ContactQuery
.
ContactQuery
(смотрите здесь) занимает SortType
(смотрите здесь), позволяя сортировать контакты либо по имени, либо по фамилии.
Простым примером может быть следующий.
const { data: contacts } = await Contacts.getContactsAsync({
fields: [Contacts.Fields.PhoneNumbers],
sort: Contacts.SortTypes.FirstName
});
Стоит отметить, что в настоящее время SortType
это только доступно для Android. Итак, для iOS вам нужно будет отсортировать их в нужном вам порядке самостоятельно.