Nouvel utilisateur natif React ici. Je rencontre un problème et je ne sais pas comment procéder. J'ai réussi à faire fonctionner React-Navigation correctement, puis j'ai commencé à recevoir une erreur: "Le composant pour l'itinéraire doit être aa React Component" mais à moins que je manque quelque chose, je crois que le composant Je fais référence est un composant réactif. Voir mon index.Android.js ci-dessous et mon Home.js ci-dessous:
//index.Android.js
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
import {
TabNavigator,
StackNavigator
} from 'react-navigation';
import Home from './app/components/Home/Home';
import Search from './app/components/Search/Search';
export default class demoApp extends Component {
render() {
return (
<SimpleNavigation/>
);
}
}
export const SimpleNavigation = StackNavigator({
Home: {
screen: Home,
header: { visible: false },
navigationOptions: {
title: 'Home',
header: null
},
},
Search: {
screen: Search,
navigationOptions: {
title: 'test'
},
},
},{});
//Home.js
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Image,
TextInput,
Button,
TouchableHighlight
} from 'react-native';
class Home extends Component {
constructor(props){
super(props);
this.state = {zipCode: ''}
}
navigate = (zipCode) => {
this.props.navigation.navigate('Search', zipCode);
}
render() {
return (
<View style={styles.container}>
<View style={[styles.boxContainer, styles.boxOne]}>
<Image style={styles.logo} source {require('../../images/Logo.png')} />
<Text style={styles.title}>An application to do things</Text>
<TextInput
style={styles.textInput}
placeholder='Enter a Zip Code'
onChangeText={(zipCode) => this.setState({zipCode})}
>
</TextInput>
</View>
<View style={[styles.boxContainer, styles.boxTwo]}>
<TouchableHighlight onPress={() => this.navigate(this.state.zipCode)}>
<Text style={styles.searchBox}>
Search
</Text>
</TouchableHighlight>
</View>
</View>
);
}
}
Toute aide/réaction très appréciée. Merci!
Je pense que le problème est avec home.js puisque vous ne l'exportez pas. Essaye ça :
export default class Home extends Component { ... }
^^^^^^^^^^^^^^
Ajoutez-les ou ajoutez simplement
export default Home;
à la fin de home.js
fichier
Pour toute autre personne venant ici, vous pourriez recevoir l'erreur "Le composant pour l'itinéraire doit être une erreur React Component") car vous n'avez pas d'export par défaut, ce qui était le cas pour moi.
export HomeScreen extends React.Component {
...
contre
export default HomeScreen extends React.Component {
...
J'espère que cela aide quelqu'un!
const MyNavigator = createStackNavigator({
RouteNameOne: {
screen: () => <HomeScreen/>
},
RouteNameTwo: {
screen: () => <NewScreen/>
}
}, {
initialRouteName: 'RouteNameOne'
});
Ça va marcher.
Dans mon cas, mettre ce bloc de code dans home.js a résolu le problème
static navigationOptions = {
navigationOptions: {
title: "scren title",
}
};