Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
156
rated 0 times [  162] [ 6]  / answers: 1 / hits: 48686  / 8 Years ago, mon, march 7, 2016, 12:00:00

I have a component named EnterName in another folder I want to use in my Navigator in my index.ios file. When I put EnterName in the same file I get no problems, but when I try and import it from another file I get:



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`


I've tried two different ways of importing the EnterName component, and neither work:



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



Below is some text that uses Navigator and tries to use the component EnterName from another folder (this works when EnterName is declared in the same file).



  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();
}
}}
/>
}
/>
);
}
}


And, if you want to see the EnterName file, it's here:



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;


Can you help me figure out how to modularize my code?



EDIT: I just forgot the s at the end of module.exports. Seems like export default class _classname extends Component { is the way to go.


More From » import

 Answers
8

Have you missed 's' at the end of module.export. It should be module.exports. In that case the import should be



import EnterName from './App/Components/EnterName


Instead of module.exports you can also use



export default class EnterName extends Component


https://developer.mozilla.org/en/docs/web/javascript/reference/statements/import


[#63026] Friday, March 4, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jarod

Total Points: 62
Total Questions: 111
Total Answers: 83

Location: Saint Vincent and the Grenadines
Member since Sat, Sep 11, 2021
3 Years ago
;