I am trying to get previous route name to my current screen. Because based on the previous screen name, I have to show/hide few objects in current screen.
To get previous screen name, I have tried following
componentDidMount() { const { navigation } = this.props; if (navigation.state.params && navigation.state.params.previous_screen) { console.log('navigation.state.params.previous_screen', navigation.state.params.previous_screen); } }
But, It’s getting undefined
in console log.
Any suggestions?
Advertisement
Answer
You need to use NavigationActions
goToScreen = () => { const navigateAction = NavigationActions.navigate({ routeName: 'Profile', params: { previous_screen: 'Home' }, // current screen action: NavigationActions.navigate({ routeName: 'Profile' }), // screen you want to navigate to }); this.props.navigation.dispatch(navigateAction); };
call the above function in your onPress
<Text onPress={this.goToScreen}>Go to screen</Text>
In your other screen
componentDidMount = () => { const { navigation } = this.props; if (navigation.state.params && navigation.state.params.previous_screen) { this.setState({ previous_screen: navigation.state.params.previous_screen }); } else { console.log("ERROR"); } };
Function version
const goToScreen = () => { // assuming that navigation is passed in props props.navigation.navigate('Settings', { previous_screen: 'Home' }) }
And access the params like
const Settings = ({ route }) => { const { previous_screen } = route.params; return .... }