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);
3 Réponses :
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'); code>
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
essayez avec encodeURIComponent (this.props.navigation.getParam ('message'); ou encodeURIComponent (this.props.navigation.Param ('message');
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" } })