web-dev-qa-db-ja.com

React Navigationから以前のルート名を取得する方法

現在の画面に以前のルート名を取得しようとしています。以前の画面名に基づいているため、現在の画面でいくつかのオブジェクトを表示/非表示にする必要があります。

以前の画面名を取得するために、私は以下を試しました

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

作業デモ

1
Junius L.
const navigateAction = NavigationActions.navigate({
  routeName: 'Profile',
  action: NavigationActions.navigate({ routeName: 'Profile', params: { previous_screen: 'Home' } }),
});
this.props.navigation.dispatch(navigateAction);
0
Esha Singh