Je reçois cette erreur et j'ai beaucoup de difficulté à la réparer.
Ce que j'essaie de faire ici, c'est d'avoir 3 écrans différents et une barre de tabulation qui permet d'accéder à chaque écran.
Voici mon index:
import React, { Component } from 'react';
import { AppRegistry, Navigator, StyleSheet, View, Text } from 'react-native';
import Nav from './app/components/Nav';
import Screen from './app/Screen';
import Tabs from 'react-native-tabs'
import SwitchView from './SwitchView';
class Proj extends Component {
constructor(props){
super(props);
}
render(){
var x = "FeedView";
return(
<View style={styles.container}>
<Tabs selected={x} style={{backgroundColor:'white'}}
selectedStyle={{color:'red'}} onSelect={el=> {x = el.props.name}}>
<Text name="FeedView">First</Text>
<Text name="WikiView" selectedIconStyle={{borderTopWidth:2,borderTopColor:'red'}}>Second</Text>
<Text name="BoardView">Third</Text>
</Tabs>
<SwitchView id={x}/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
})
AppRegistry.registerComponent('Proj', () => Proj);
voici mon SwitchView:
import Feed from './app/pages/Feed/Feed';
import Board from './app/pages/Board';
import Wiki from './app/pages/Wiki';
class SwitchView extends Component {
render(){
var { id } = this.props;
switch (id) {
case "FeedView":
return <Feed/>
case "WikiView":
return <Wiki/>
case "BoardView":
return <Board/>
}
}
}
Ceci est probablement dû à des problèmes d'exportation/importation de module JS dans votre programme, généralement pour l'une des deux raisons énumérées ci-dessous:
J'ai rencontré une erreur similaire, mais dans mon cas, elle n'est pas causée par export
mais par import
et j'ai utilisé l'instruction import
de manière incorrecte pour importer un élément inexistant dans le module.
Dans mon cas, la import
a été écrite de manière incorrecte comme suit:
import { MyComponent } from './MyComponents/MyComponent'
alors qu’il devrait en fait être:
import MyComponent from './MyComponents/MyComponent'
Et cela m'a rendu fou et m'a pris toute une journée pour le comprendre et j'espère que cela fera gagner plusieurs heures à certaines personnes.
Changez votre définition SwitchView en
export default class SwitchView extends Component...
Modifiez votre SwitchView à ceci:
import Feed from './app/pages/Feed/Feed';
import Board from './app/pages/Board';
import Wiki from './app/pages/Wiki';
export default class SwitchView extends Component {
render(){
var { id } = this.props;
switch (id) {
case "FeedView":
return <Feed/>
case "WikiView":
return <Wiki/>
case "BoardView":
return <Board/>
}
}
}
Dans mon vase, j'étais sur le 0.46.4
réactif-natif et j'avais quelque chose comme import MainContainer from './app'
dans lequel le répertoire app
avait un fichier index.js
partagé entre Android et iOS, mais React Native ne détectait pas de index.js
dans app
. Une fois que je suis passé à import MainContainer from './app/index.js'
cela a fonctionné.
Je n’étais confronté à ce problème que pour les paquets installés . Auparavant, j’écrivais en tant que
import WebView from 'react-native-webview-messaging/WebView';
J'ai changé pour
import { WebView } from 'react-native-webview-messaging/WebView';
En quoi cela diffère-t-il de module.exports = SwitchView?
Pour moi, module.exports fonctionne pour tous mes fichiers js sauf un.