2017-06-28 3 views
9

Danke für die Antworten von jetzt an,Wie verwendet man index.js anstelle von (index.ios.js, index.android.js) in React Native für Cross-Plattform-App?

ich ein Neuling in india Reagieren bin, habe ich ein Cross-Plattform-App machen will, so habe ich 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; 

Dann importierte ich Index Js von beiden index.ios.js und index.android.js wie folgt aus:

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

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

ich denke, danach sollte es funktionieren, aber ich bekomme diese Fehler:

enter image description here

+0

bitte Index-Datei umbenennen und versuchen Sie es erneut –

+0

Ihr Bild ist nicht Arbeiten. Außerdem haben Sie nicht angegeben, was Sie damit erreichen wollten. –

+0

@MichaelCheng Bild funktioniert Ich denke, weil ich versuchte auf meinem Handy auch, ich möchte eine Cross-Plattform-App machen –

Antwort

19

Nach Reagieren v0.49, Sie don brauche nicht index.ios.js und index.android.js. Sie brauchen nur die index.js:

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

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

(appMobile mit dem Namen Ihrer App ersetzen)

Quelle: (https://github.com/facebook/react-native/releases/tag/v0.49.0)

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

+0

Das war ungefähr ich suchte, weil ich mit anderen Version (älter) gearbeitet habe und ich sah die 2 verschiedenen Dateien, aber von 0,49 erhalten Sie eine Datei nach dem Erstellen der App. –

+0

Wenn Sie Ihre RN Version aktualisieren möchten, überprüfen Sie https://facebook.github.io/react-native/docs/upgrading.html ('reactive-native-git-upgrade' sollte wie ein Charme funktionieren) –

+1

ist es möglich zu benutze immer noch 2 Dateien mit neuen react-native? – pstanton

6

Sie gehen rückwärts darüber. index.ios.js und index.android.js sind immer separate Eingangspunkte in einem Standardprojekt react-native init. Wenn Sie möchten, dass sie dieselbe Codebasis über index.js ausführen, sollten Sie sie so einrichten, dass index.ios.js und index.android.jsindex.js importieren und die gleiche Basiskomponente wie in index.js definiert registrieren.

Zum Beispiel können Sie sehen, wie es in diesem example ToDo app (Github repo here) getan wird.

Wenn Sie index.js in Ihrem Stammordner platzieren, wird es mit index.android.js und index.ios.js in Konflikt geraten, wenn Sie es nicht direkt verweisen. Sie müssen also auf den genauen Pfad Ihres Imports zeigen. Siehe den folgenden Code.

index.ios.js und index.android.js (gleicher Inhalt)

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

Ich kopiert und eingefügt Ihren Code, aber ich bekomme den gleichen Fehler: - /, –

+0

@davutdev Probiere es jetzt mit den Bearbeitungen aus.Ich habe den React Import verpasst, da ich die Antwort wirklich schnell zusammensetze. Du brauchst das noch in allen drei Dateien./index' import wird einen Namenskonflikt haben, wenn Sie 'index.js' im selben Verzeichnis wie andere Dateien platzieren, die mit' index.irgendetwas' beginnen. Hätten Sie einen anderen Dateinamen benutzt oder woanders abgelegt, wäre das kein Problem gewesen Ich fügte Kommentare hinzu, um es in der Antwort zu erklären. Ich testete das auch in einem brandneuen Projekt gerade jetzt, wenn es noch irgendwelche Fehler gibt, muss es von etwas anderem sein. –

+0

Jetzt funktioniert es, Danke al ot –

Verwandte Themen