Импорт файлов машинописи на основе соглашения об именах в React Native - PullRequest
0 голосов
/ 17 июня 2019

Итак, у меня есть три ts файла с именами, приведенными ниже:

  • MyModule.ios.ts
  • MyModule.android.ts
  • MyModule.ts (пусто)

первые два файла имеют метод с именем: setup(), который нужно запускать на основе платформы. Метро-компоновщик также выполнит разрешение, попытается импортировать .ios при сборке для ios и .android при сборке для android ..

и у меня есть другой файл, который импортирует этот метод следующим образом:

import { setup } from 'MyModule';

проблема в том, что я не уверен, что это разрешит файлы .android и .ios. Как правильно разделить код на части?

Я нашел этот обходной путь здесь, но мне было интересно, есть ли лучший способ: https://github.com/Microsoft/TypeScript/issues/8328#issuecomment-219583152

1 Ответ

2 голосов
/ 17 июня 2019

Если вы хотите использовать отдельные файлы для iOS и Android, вам нужно назвать их MyModule.ios.ts и MyModule.android.ts расширениями. Пустой файл MyModule.ts не требуется.

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

import { setup } from './MyModule'; // Will automatically import either MyModule.ios.ts or MyModule.android.ts

См. Документацию по этому вопросу: https://facebook.github.io/react-native/docs/platform-specific-code.html#platform-specific-extensions


Если вы не хотите использовать отдельные файлы, вы можете использовать модуль Platform. Это хорошо для небольших фрагментов кода, которые вы хотите сделать платформенными.

import { Platform } from 'react-native';

if(Platform.OS === 'ios') {
  // iOS specific code here
} else if(Platform.OS === 'android') {
  // Android specific code here
} else {
  // Other platform
}

См .: https://facebook.github.io/react-native/docs/platform-specific-code#platform-module

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