2017-06-28 5 views
9

おかげで、クロスプラットフォームアプリケーションのReact Nativeで(index.ios.js、index.android.js)の代わりにindex.jsを使用するにはどうすればいいですか?今から答えを

私はで初心者ですが、ネイティブ反応し、私は、クロスプラットフォームのアプリを作りたいので、私はindex.jsを作成しました:

import React from 'react'; 
import { 
    Component, 
    View, 
    Text, 
} from 'react-native'; 

class ReactApp extends Component { 

    render() { 
     return (
      <View><Text>Hello world</Text></View> 
     ); 
    } 
} 

module.exports = ReactApp; 

その後、私は、インデックスをインポートこのように、両方のindex.ios.jsとindex.android.jsからの.js:

import { AppRegistry } from 'react-native'; 
import ReactApp from './index'; 

AppRegistry.registerComponent('ReactApp',() => ReactApp); 

私はこの後、それが動作するはずだと思うけど、私はこの エラーが発生します。

enter image description here

+0

をインデックスファイルの名前を変更し、再度お試しください –

+0

あなたのイメージではありませんワーキング。また、あなたはこれを行うことによって達成しようとしていたことを述べなかった。 –

+0

@MichaelChengのイメージが動作している私は私の携帯電話でも試した原因だと思う、私はクロスプラットフォームのアプリケーションを作りたい –

答えて

19

v0.49に反応した後、あなたドンindex.ios.jsindex.android.jsが必要です。あなただけindex.jsが必要になります。

import {AppRegistry} from 'react-native'; 
import App from './app/App'; 

AppRegistry.registerComponent('appMobile',() => App); 

(アプリの名前とappMobileを置き換え)

出典:(https://github.com/facebook/react-native/releases/tag/v0.49.0

New projects have a single entry-point (index.js) from now on

+0

これは私が探していたもので、私は他のバージョン(古いもの)と作業していたので、2つの異なるファイルを見ましたが、0.49からアプリケーションを作成した後に1つのファイルが得られます。 –

+0

RNバージョンをアップグレードしたい場合はhttps://facebook.github.io/react-native/docs/upgrading.htmlをチェックしてください( 'react-native-git-upgrade'はcharmeのように動作します) –

+1

まだ新しい反応ネイティブで2つのファイルを使用していますか? – pstanton

6

あなたはこれを後ろ向きにしています。 index.ios.jsindex.android.jsは、デフォルトのreact-native initプロジェクトでは常に別のエントリポイントになります。同じコードベースをindex.jsで実行する場合は、index.ios.jsindex.android.jsをインポートしてindex.jsをインポートし、index.jsで定義されているのと同じ基本コンポーネントを登録する必要があります。

たとえば、あなたはこれがexample ToDo appGithub repo here)でどのように行われたかを見ることができます。

ルートフォルダにindex.jsを置くと、直接参照しないとindex.android.jsindex.ios.jsと競合します。したがって、インポートの正確なパスを指す必要があります。以下のコードを参照してください。

index.ios.jsindex.android.js(同じ内容)

import React from 'react'; 
import { AppRegistry } from 'react-native' 
import ReactApp from './index.js' 
// Had you placed index.js in another folder like `./app`, you could instead do your import with this shorthand: 
// import ReactApp from './app' 

AppRegistry.registerComponent('ReactApp',() => ReactApp) 

index.js

// Note: I noticed that you imported Component from the wrong place. That might also be contributing to your issue so I fixed it here. 
import React, { Component } from 'react'; 
import { 
    View, 
    Text, 
} from 'react-native'; 

// Unless you are exporting multiple things from a single file, you should just use this. 
// It's more idiomatic than using module.exports = ReactApp; 
export default class ReactApp extends Component { 
    render() { 
     return (
      <View><Text>Hello world</Text></View> 
     ); 
    } 
} 
+0

あなたのコードをコピーして貼り付けました。 - /、 –

+0

@davutdev編集内容を今すぐ試してみてください。私は本当にすばやく答えを出すので、Reactインポートを見逃してしまいましたが、まだ3つのファイルすべてでそれを必要としています。/index' importは 'index.something'で始まる他のファイルと同じディレクトリに' index.js'を置くと命名競合を起こします。別のファイル名を使用した場合や別の場所に置いた場合、それは問題にはなりません私はこれを解答に説明するコメントを追加しました。私は今でもまったく新しいプロジェクトでこれをテストしました。まだエラーがあれば、何か他のものでなければなりません。 –

+0

ot –

関連する問題