2016-03-07 14 views
10

Mam element o nazwie EnterName w innym folderze, którego chcę użyć w moim Navigator w moim pliku index.ios. Kiedy kładę EnterName w tym samym pliku mam żadnych problemów, ale gdy próbuję i zaimportować go z innego pliku otrzymuję:Jak poprawnie zaimportować komponent do mojego nawigatora w trybie React Native?

Element type is invalid: expected a string (for built-in components 
or a class/function (for composite components) but got: undefined. 
Check the render method of `Navigator` 

Próbowałem dwa różne sposoby importowania składnika EnterName, ani pracy:

import {EnterName} from './App/Components/EnterName'; var EnterName = require('./App/Components/EnterName');

Poniżej jest tekst, który używa Navigator i próbuje użyć komponentu EnterName z innego folderu (działa gdy EnterName jest zadeklarowany w tym samym pliku).

render() { 
    return (
     <Navigator 
     initialRoute={{name: 'Name entry', index: 0}} 
     renderScene={(route, navigator) => 
      <EnterName 
       name={route.name} 
       onForward={() => { 
       var nextIndex = route.index + 1; 
       navigator.push({ 
        name: 'Scene ' + nextIndex, 
        index: nextIndex, 
       }); 
       }} 
       onBack={() => { 
       if (route.index > 0) { 
        navigator.pop(); 
       } 
       }} 
      /> 
     } 
     /> 
    ); 
    } 
} 

A jeśli chcesz zobaczyć plik EnterName, to tutaj:

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

class EnterName extends Component { 
    render() { 
    return (
     <View style={styles.center}> 
     <View style={styles.flowRight}> 
      <TextInput style={styles.inputName} 
      placeholder="Enter your name" 
      textAlign="center" 
      onChangeText={(text) => this.setState({text})} 
      //value={this.state.text} 
      /> 

      <TouchableHighlight style={styles.button} 
      underlayColor='#99d9f4'> 
      <Text style={styles.buttonText}> Go </Text> 
     </TouchableHighlight> 
     </View> 
     </View> 
    ) 
    } 
} 
// The stylesheet is here, and then below it I have: 
module.export = EnterName; 

Pomożesz mi zorientować się, jak zmodularyzowanie mój kod?

EDYCJA: Właśnie zapomniałem "s" na końcu module.exports. Wygląda na to, że eksportuje domyślną klasę _classname extends Component {jest drogą do zrobienia.

+0

spróbować zrobić 'domyślna klasa eksport EnterName rozciąga Component' –

+0

Próbowałem że zarówno i bez 'module.export = EnterName', a następnie z obu moich odmian importu w klasie index.ios. Nie działał. – AlwaysQuestioning

+0

Możesz odnieść się do https://github.com/react-native-simple-router-community/react-native-simple-router –

Odpowiedz