Векторные иконки для Android и IOS
В https://www.npmjs.com/package/react-native-ionicons мы даем два способа загрузки иконок для iOS и Android. Я попробовал оба подхода с v9.0.0 @expo/vector-icons.
Я импортирую Ionicons с этим утверждением:
import { Ionicons } from '@expo/vector-icons';
- Удалить IOS / MD от имени
<Ionicons name="close-circle" size={25} style={{color: 'white'}} />
Я получаю приведенную ниже ошибку, которая также происходит для других имен значков:
Предупреждение: Сбой типа реквизита: неверное имя реквизита значения close-circle передано в Icon, ожидается одно из...
- Если я передам свойства ios / android, значок просто не появится, и я не получу предупреждение, например:
<Ionicons ios="ios-close-circle" android="md-close-circle" size={25} style={{color: 'white'}} />
Мое текущее исправление основано на том, как я могу создать кроссплатформенный значок в реагировать родной, Я использую:
<Ionicons name={${Platform.OS === "ios" ? "ios" : "md"}-close-circle} size={25} style={{color: 'white'}} />
Есть ли более простой способ?
Спасибо!
2 ответа
Так, предупреждение говорит о том, что имя, которое вы указали, не совпадает с иконками Ionicons. Два способа ее решения будут
- Передача правильного имени компоненту. Чтобы найти все имена, посетите здесь
- импортировать Ionicons из '@expo/vector-icons/Ionicons' .
Надеюсь, если вам поможет!
Похоже, это был недосмотр с моей стороны. README для @expo/vector-icons гласит:
Эта библиотека представляет собой слой совместимости вокруг @oblador/ Reaction-native-vector-icons для работы с системой активов Expo.
Я не знаю, что заставило меня проверить документацию для https://www.npmjs.com/package/react-native-ionicons но ясно, что параметры, которые могут быть применены к нему, не предназначены для работы с @oblador/ реагировать -native-vector-icons и, таким образом, @expo/vector-icons...
Для всех, кто интересуется кроссплатформенными иконками с expo / vector-icons, вы можете обратиться к вопросу и решению, приведенным в разделе Как я могу создать кроссплатформенную иконку в реагировать нативно?