Как импортировать модуль в соответствии с платформой

#typescript #react-native

#typescript #react-native

Вопрос:

Я хочу импортировать модуль в соответствии с платформой.

Например:

 import MapViewIOS from 'react-native-map-clustering'
import MapViewAndroid from 'react-native-maps'

const MapView = Platform.select({
  ios: MapViewIOS,
  android: MapViewAndroid,
})
  

Ошибка:

Тип элемента JSX ‘MapView’ не имеет никаких сигнатур конструкций или вызовов.ts(2604)

Комментарии:

1. Попробуйте в JSX создать условие для platform.os === «iOS»? <MapViewIos />: <MapViewAndroid/>

Ответ №1:

Это выглядит нормально.

Вот абстрактный пример того, что вы пытаетесь сделать работающим.

Это говорит о том, что вы неправильно используете MapView или используемая вами версия MapView повреждена.

Ответ №2:

В react-native вы должны разделить файл по платформе. Например, создайте два файла с MapView.ios.js MapView.android.js именем и, чтобы экспортировать конкретный компонент для платформы, и везде, где вам нужно использовать MapView, импортируйте их следующим образом import MapView from "./MapView"