Can I require a module specifically for iOS in React Native?

前端 未结 3 1050
北海茫月
北海茫月 2021-02-07 13:31

I am currently using react-native-safari-view module in my React Native project for showing web views in iOS.

As the module is not yet implemented for Android, when I tr

相关标签:
3条回答
  • 2021-02-07 14:13

    To get around this I have been using require instead (but mainly for modules rather than components):

    var SafariView;
    
    if (Platform.OS == 'ios') {
        SafariView = require('react-native-safari-view');
    }
    

    For this particular situation I would definitely go for Konstantin Kuznetsov's approach - Just sticking this here as it might help someone else where making a wrapper component with separate files may be overkill :)

    0 讨论(0)
  • 2021-02-07 14:14

    platform-specific code is more complex, you should consider splitting the code out into separate files. React Native will detect when a file has a .ios. or .android. extension and load the relevant platform file when required from other components.

    For example, say you have the following files in your project:

    BigButton.ios.js
    BigButton.android.js
    

    You can then require the component as follows:

    import BigButton from './BigButton'
    

    reference https://facebook.github.io/react-native/docs/platform-specific-code.html#platform-specific-extensions

    0 讨论(0)
  • 2021-02-07 14:19

    You can separate platform code by creating two different files your_file_name.android.js and your_file_name.ios.js. So you can create two versions for the file where you want to use SafariView or you can create a wrapper around SafariView which will export this module on iOS and dummy object on Android, and then use this wrapper with Platform.OS checks.

    0 讨论(0)
提交回复
热议问题