2
votes

Comment utiliser la navigation de réaction dans un const?

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


0 commentaires

3 Réponses :


1
votes

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>
);


1 commentaires

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



5
votes

2 commentaires

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



1
votes

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>

);


2 commentaires

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.