J'ai utilisé const pour afficher les composants. Maintenant, lorsque j'utilise la navigation de réaction pour un bouton dans const, je vois cette erreur: undefined n'est pas un objet (évaluation de '_this.props.navigation.navigate')
J'ai essayé d'ajouter navigation = {this.props.navigation } au bouton pour autoriser la nabigation, mais cela n'a pas fonctionné.
const WomenTab = () => ( <View> <Button onPress={() => { this.props.navigation.dispatch(StackActions.reset({ index: 0, actions: [ NavigationActions.navigate({ routeName: 'Wallet' }) ], })) }}> <Text>Click</Text> </Button> <View> );
Lien de la bibliothèque: http://github.com/react-native-community/react-native-tab-view
3 Réponses :
Vous devez passer vos accessoires
au const
, quelque chose comme ceci
<WomenTab navigation={this.props.navigation} />
Ensuite, lorsque vous utilisez votre const
vous passez les accessoires que vous voulez.
const WomenTab = (props) => ( <View> <Button onPress={() => { props.navigation.dispatch(StackActions.reset({ index: 0, actions: [ NavigationActions.navigate({ routeName: 'Wallet' }) ], })) }}> <Text>Click</Text> </Button> <View> );
Je vous remercie. Cela a bien fonctionné lorsque j'ai utilisé en const normal. Mais maintenant, j'ai un autre const dans cette bibliothèque, et ne fonctionne pas pour cela. lien: github.com/react-native-community/react-native- onglet
Cela s'appelle un composant fonctionnel a >, souvent appelé composant fonctionnel sans état. L'une des différences majeures est que les SFC ne reçoivent pas automatiquement les accessoires, mais doivent plutôt être passés en arguments. Donc, au lieu de dire Puisque le prop de navigation est passé automatiquement aux enfants des navigateurs, vous ne le faites pas. t besoin de faire autre chose. Si vous vouliez passer d'autres accessoires, vous le feriez comme d'habitude: Un autre modèle courant est de destructure les accessoires passés aux SFC comme ceci: J'espère que cela vous aidera, bonne chance! this.props
, vous devriez utiliser ce modèle: const WomenTab = ( {navigation} ) => ( // <-- you can pick the props you want via destructuring
<View>
<Button onPress={() => {
navigation.dispatch(StackActions.reset({
index: 0,
actions: [ NavigationActions.navigate({ routeName: 'Wallet' }) ],
}))
}}>
<Text>Click</Text>
</Button>
<View>
);
<WomenTab myProp={value} />
const WomenTab = (props) => ( // <-- add props as an argument
<View>
<Button onPress={() => {
props.navigation.dispatch(StackActions.reset({
index: 0,
actions: [ NavigationActions.navigate({ routeName: 'Wallet' }) ],
}))
}}>
<Text>Click</Text>
</Button>
<View>
);
Bonne réponse. J'aime votre explication détaillée, la déstructuration est un bel ajout.
Je vous remercie. Cela a bien fonctionné lorsque j'ai utilisé en const normal. Mais maintenant, j'ai un autre const dans cette bibliothèque, et ne fonctionne pas pour cela. lien: github.com/react-native-community/react-native- onglet
En gros, vos accessoires ne sont pas passés du composant Parent au composant enfant. Assurez-vous d'avoir défini votre composant WomenTab dans la fonction createStackNavigator. Passez également les accessoires dans votre composant de fonction.
const WomenTab = (props) => ( <View> <Button onPress={() => { this.props.navigation.dispatch(StackActions.reset({ index: 0, actions: [ NavigationActions.navigate({ routeName: 'Wallet' }) ], })) }}> <Text>Click</Text> </Button> <View>
);
Cela ne fonctionnera pas car vous utilisez this.props.navigation
il n'y a pas this
que vous auriez besoin de supprimer this.
pour que cela fonctionne .
@Andrew Merci de l'avoir mentionné. J'ai totalement oublié de supprimer le mot-clé this.