Как я могу создать значок кроссплатформенности в реагировать родной?

Я создаю форму регистрации и хочу добавить значки, но значок должен выглядеть по-разному на разных платформах, например. Если я использую Ionicons, он должен отображать ios-person на устройстве ios и md-person на устройствах Android. Как я могу создать собственный компонент, подобный этому, чтобы я просто импортировал его в форму экрана "Регистрация" и добавил значок, основанный на вводе текста, например, имя человека.

1 ответ

Решение

Вы можете определить значок на основе платформы, например, так:

import { Platform } from 'react-native';

<Ionicons
  name={Platform.select({
    ios: 'ios-person',
    android: 'md-person',
  })}
/>

Если единственная разница ios а также md,

<Ionicons 
  name={`${Platform.OS === "ios" ? "ios" : "md"}-person`}
/>

Компонент многократного использования, возможно,

const Icon = ({ name }) => (
  <Ionicons 
    name={`${Platform.OS === "ios" ? "ios" : "md"}-${name}`}
  />
)

// Usage
<Icon name="person" />

Еще раз, это предполагает, что единственное, что отличается ios а также md,

редактировать

Обновление name а также size в зависимости от каждой платформы можно сделать так

<Ionicons
  {
    ...Platform.select({
      ios: {
        name: 'ios-person',
        size: 25,
      },
      android: {
        name: 'md-person',
        size: 35
      }
    })
  }
/>
Другие вопросы по тегам