首页 > 解决方案 > 平台特定文件 file.ios.js | 未正确检测到 file.android.js

问题描述

根据react native 文档“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())
}

但这不应该是必需的,为什么第一种(自然)方法不起作用?

标签: javascriptreact-nativeimport

解决方案


推荐阅读