I am trying to navigate from one screen to another in react native by carrying a value from one screen to the other however, i am getting the above error. Ideally i would like send the value from within a flatlist, i am trying to achieve a clickable flatlist which carrys a parameter from the selected row to the other screen.
//index.js
import React from 'react';
import { StyleSheet, Button, Text, View, FlatList, TouchableHighlight } from 'react-native';
const ComponentsScreen = ({ navigation }) => {
//example for detail scree
return (
<View>
<FlatList
data={[
{ key: 'Task 1' },
{ key: 'Task 2' },
{ key: 'Task 3' },
{ key: 'Task 4' },
{ key: 'Task 5' },
]}
renderItem={({ item }) => {
return (
<TouchableHighlight
onPress={() =>
navigation.navigate('Next', { message: 'hello from screen 1' })}
>
<Text >{item.key}</Text>
</TouchableHighlight>
);
}
}
/>
<Button
onPress={() => navigation.navigate('NextScreen')}
title="Go to ImageScreen"
/>
</View>
);
};
const styles = StyleSheet.create({
textStyle: {
fontSize: 30
}
});
export default ComponentsScreen;
//NextScreen.js
import React from 'react';
import { Text, View } from 'react-native';
//example for detail screen
const NextScreen = (route) => {
const { message } = route.params;
return (
<View>
<Text>message: {JSON.stringify(message)}</Text>
</View>
);
};
export default NextScreen;
app.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);
If you want to receive a param for one screen to another you need to use the getparam
function, for example: const message = navigation.getParam('message');