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" }
})