2016-08-06 9 views
6

मैं वर्तमान में आईओएस में वेब दृश्य दिखाने के लिए अपने प्रतिक्रिया मूल परियोजना में react-native-safari-view मॉड्यूल का उपयोग कर रहा हूं।क्या मुझे विशेष रूप से प्रतिक्रिया मूल में आईओएस के लिए एक मॉड्यूल की आवश्यकता हो सकती है?

import SafariView from 'react-native-safari-view' 

मैं Android के लिए Linking पुस्तकालय का उपयोग करने के लिए जा रहा हूँ:

के रूप में मॉड्यूल अभी तक Android के लिए लागू नहीं है, जब मैं Android के लिए परियोजना बनाने की कोशिश, यह मेरे इस लाइन पर एक त्रुटि देता है , लेकिन मुझे नहीं पता कि दो प्लेटफार्मों के लिए एक ही कोड का उपयोग कैसे करें।

मैंने कोशिश की:

if (Platform.OS == 'ios') { 
    import SafariView from 'react-native-safari-view' 
} 

और यह मुझे इस त्रुटि देता है:

import' and 'export' may only appear at the top level

मैं इस के आसपास मिलता है?

उत्तर

3

आप दो अलग-अलग फाइलें your_file_name.android.js और your_file_name.ios.js बनाकर प्लेटफ़ॉर्म कोड को अलग कर सकते हैं। तो आप फ़ाइल के लिए दो संस्करण बना सकते हैं जहां आप SafariView का उपयोग करना चाहते हैं या आप SafariView के आसपास एक रैपर बना सकते हैं जो एंड्रॉइड पर आईओएस और डमी ऑब्जेक्ट पर इस मॉड्यूल को निर्यात करेगा, और फिर Platform.OS चेक के साथ इस रैपर का उपयोग करें।

4

इस मैं (बल्कि घटकों से मॉड्यूल के लिए लेकिन मुख्य रूप से) require उपयोग कर रहा है के बजाय चारों ओर पाने के लिए: इस विशेष स्थिति मैं निश्चित रूप से Konstantin कुज़्नेत्सोव के दृष्टिकोण के लिए जाना होगा के लिए

var SafariView; 

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

- बस इस यहाँ यह के रूप में चिपके हुए किसी और की मदद कर सकता है जहां अलग फाइलों के साथ एक रैपर घटक बनाना अधिक हो सकता है :)

+1

मैं जोड़ने के लिए किया था

उदाहरण के लिए, आप अपने प्रोजेक्ट में निम्न फ़ाइलें है कहना मेरे मामले में आयात के अंत तक '.default'। इस मामले में यह होगा: 'SafariView = आवश्यकता है (' प्रतिक्रिया-मूल-सफारी-दृश्य ')। डिफ़ॉल्ट; ' –

3

प्लेटफ़ॉर्म-विशिष्ट कोड अधिक जटिल है, आपको कोड को अलग-अलग फ़ाइलों में विभाजित करने पर विचार करना चाहिए। प्रतिक्रिया फ़ाइल का पता लगाएगा जब फ़ाइल में एक .ios है। या .android। अन्य घटकों से आवश्यक होने पर प्रासंगिक प्लेटफॉर्म फ़ाइल को विस्तारित करें और लोड करें। इस प्रकार

BigButton.ios.js 
BigButton.android.js 

फिर आप घटक की आवश्यकता होती है सकते हैं::

import BigButton from './BigButton' 

संदर्भ https://facebook.github.io/react-native/docs/platform-specific-code.html#platform-specific-extensions

संबंधित मुद्दे

 संबंधित मुद्दे