これらのすべての異なるオプションが種類の私を混乱させています。別のファイルを使用する場合と、エントリポイントを1つだけ持つ場合はどんな状況ですか?
これまでのところ、別のエントリファイルを用意する必要はありません。index.ios.js
とindex.android.js
です。私が最初にやること、そしてほとんどの人がやっていることは、両方のファイルに次のようなものを追加することです。
import { AppRegistry } from 'react-native'
import App from './App/Containers/App'
AppRegistry.registerComponent('YourAppName',() => App)
また、ならびに単一index.js
ファイルと上記のコードに置き換える、それらの両方を削除することができます。私自身も含めてなぜもっと多くの人がそれをしないのかはっきりしない。
プラットフォーム間でロジックを分割する必要があることがわかるまで、このパターンを安全に実行できると思います。あなたがそうしても、エントリーファイル自体からそれを分割することはありそうにないと思います。リーフノードでさらにロジックを分割する必要があります。
platform specific codeと書く必要がある場合は、Platform
モジュールを使用してインライン化できます。 '反応ネイティブ' から
import { Platform, StyleSheet } from 'react-native';
const styles = StyleSheet.create({
height: (Platform.OS === 'ios') ? 200 : 100,
});
またはPlatform.select
インポート{プラットフォーム、スタイルシート}。あなたはまた、適切なコンポーネントを選択するために使用することができます
const styles = StyleSheet.create({
container: {
flex: 1,
...Platform.select({
ios: {
backgroundColor: 'red',
},
android: {
backgroundColor: 'blue',
},
}),
},
});
...
const Component = Platform.select({
ios:() => require('ComponentIOS'),
android:() => require('ComponentAndroid'),
})();
<Component />;
最後の例は、同様に、ファイルの命名規則を経由して達成することができます。たとえば、あなたは、次の2つのコンポーネントファイル...
|- Component.ios.js
|- Component.android.js
し、あなたのファイルにあなただけのようなComponent
を必要としている場合...
import Component from './Component';
そしてバンドラは、.ios
又は.android
ビットに基づいて適切なコンポーネントをインポートします。
ありがとうございました!それはまさに私が探していたものです。私は通常、論理を分割する唯一の時間はコンポーネントにあり、ルートにはないという気持ちがありました。これは2つの別個のエントリポイントが私を混乱させる理由です。 – MarksCode
助けてくれてうれしい!昨日(React Native v0.49)(https://github.com/facebook/react-native/releases/tag/v0.49.0)がリリースされました。この2つのエントリーファイルは、単一のindex.js。 (['6e99e31'](https://github.com/facebook/react-native/commit/6e99e314b232c315628c31f97a865c17c071ad23)) –
私は自分の時間を先取りしたように見えます! – MarksCode