В соответствии с ответной собственной документацией"React Native обнаружит, когда файл имеет расширение. ios. Или. android.., И загрузит соответствующий файл платформы при необходимости из других компонентов". Я пытаюсь импортировать разные хранилища для каждой из платформ some.store.ios.js
и some.store.android.js
и создать их экземпляр внутри одного общего компонента my.component.js
.
some.store . android. js
const SomeStore = class {
consturctor() {
console.log('Android')
}
}
export default SomeStore
some.store. ios. js
const SomeStore = class {
consturctor() {
console.log('IOS')
}
}
export default SomeStore
my .component. js функциональный компонент
import SomeStore from 'stores/some.store'
const MyComponent = observer(() => {
[someStore]= useState(() => new SomeStore())
}
К сожалению, я получаю журнал IOS для обеих платформ. Я тестировал на реальных мобильных устройствах.
Обходной путь, который я использую в настоящее время, - это экспорт магазинов с разными именами, импорт обоих и выбор необходимого внутри компонента:
import SomeStoreAndroid from 'stores/some.store.android'
import SomeStoreIOS from 'stores/some.store.ios'
...
if(Platform.OS === "android") {
[someStore]= useState(() => new SomeStoreAndroid())
} else {
[someStore]= useState(() => new SomeStoreIOS())
}
Но это не нужно, почему не работает первый (естественный) метод?