React Native Platform как работает? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть экран, на котором я хотел бы использовать два разных средства выбора для Android и iOS, используя Platform. Похоже, не работает, поэтому я тестирую его только с <Text>, но не меняется

  const PickerOS = () => {
    Platform.OS === 'android' ? (
      <Text>
        ANDROID
        {console.log('android')}
      </Text>
    ) : (
      <Text>
        IOS
        {console.log('ios')}
      </Text>
    );
  };

  useEffect(() => {
    PickerOS();
  }, []);

return (
    <View style={styles.container}>   
      {PickerOS()}
</View>

Где я ошибаюсь? спасибо!

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Если код вашей платформы c более специфичен для вашей платформы, вам следует рассмотреть возможность разделения кода на отдельные файлы. React Native обнаружит, когда файл имеет. ios. или. android. расширение и загрузите соответствующий файл платформы, когда это требуется от других компонентов.

Например, допустим, у вас есть следующие файлы в вашем проекте:

BigButton.ios.js
BigButton.android.js

Затем вам может потребоваться компонент следующим образом:

import BigButton from './BigButton';

React Native автоматически подберет нужный файл в зависимости от работающей платформы.

Источник: https://reactnative.dev/docs/platform-specific-code

1 голос
/ 30 апреля 2020

Ваш код работает нормально. Но вы ничего не вернули.

const PickerOS = () => {
  return Platform.OS === "android" ? (
    <Text>
      ANDROID
      {console.log("android")}
    </Text>
  ) : (
    <Text>
      IOS
      {console.log("ios")}
    </Text>
  );
};

или вы можете попробовать

const PickerOS = () =>
  Platform.OS === "android" ? (
    <Text>
      ANDROID
      {console.log("android")}
    </Text>
  ) : (
    <Text>
      IOS
      {console.log("ios")}
    </Text>
  );

Надеюсь, это вам поможет. Не стесняйтесь сомнений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...