1
votes

Déplacement des valeurs d'un écran à un autre ERREUR: undefined n'est pas un objet (évaluation de 'route.params.message')

J'essaie de naviguer d'un écran à un autre dans React native en portant une valeur d'un écran à l'autre, cependant, j'obtiens l'erreur ci-dessus. Idéalement, je voudrais envoyer la valeur à partir d'une flatlist, j'essaie d'obtenir une flatlist cliquable qui transporte un paramètre de la ligne sélectionnée vers l'autre écran.

//index.js

import React, { Component } from 'react';
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import Index from './screens/Index';
import NextScreen from './screens/NextScreen';


const navigator = createStackNavigator({
  Home: Index,
  Next: NextScreen
},
{
  initialRouteName: 'Home',
  defaultNavigationOptions: {
    title: 'App'
  }
}
);

export default createAppContainer(navigator);


0 commentaires

3 Réponses :


2
votes

Si vous souhaitez recevoir un paramètre d'un écran à un autre, vous devez utiliser la fonction getparam , par exemple: const message = navigation.getParam ('message');


4 commentaires

Salut hlebon, merci pour la réponse, j'ai essayé const message = navigation.getParam ('message', 'default'); et const message = this.props.navigation.getParam (' message ',' default '); et toujours pas de joie


Salut, quelle version de React-Navigation utilisez-vous? Je vois dans votre NextScreen que vous utilisez const NextScreen = (route) => {...} . Assurez-vous de déstructurer le paramètre props const NextScreen = ({navigation}) => {...}


Salut hlebon, oui c'était le problème, j'ai changé que cela fonctionne maintenant.


toujours une erreur, navigation.getParam () est indéfini. Je suis usign. RN 5



0
votes

essayez avec encodeURIComponent (this.props.navigation.getParam ('message'); ou encodeURIComponent (this.props.navigation.Param ('message');


0 commentaires

1
votes

Enfin trouvé le moyen de déplacer des valeurs entre les routes

const ScreenC = ({ navigation, route }) => {
  const { param1, param2 } = route.params
....
}

Ensuite, vous pouvez prendre ces valeurs dans ScreenC avec

 navigation.navigate('RouteB', {
        screen: 'ScreenC',
        params: { param1: "foo", param2: "bar" }
      })


0 commentaires