現在の画面に以前のルート名を取得しようとしています。以前の画面名に基づいているため、現在の画面でいくつかのオブジェクトを表示/非表示にする必要があります。
以前の画面名を取得するために、私は以下を試しました
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);
}
}
しかし、コンソールログでundefined
を取得しています。
助言がありますか?
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);
};
onPress
で上記の関数を呼び出す
<Text onPress={this.goToScreen}>Go to screen</Text>
他の画面で
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");
}
};
const navigateAction = NavigationActions.navigate({
routeName: 'Profile',
action: NavigationActions.navigate({ routeName: 'Profile', params: { previous_screen: 'Home' } }),
});
this.props.navigation.dispatch(navigateAction);