反应导航go返回到递归相同的屏幕

时间:2019-01-17 21:21:20

标签: react-native navigation react-navigation

我正在使用一个约束,其中我有一些类别,每个Category可以有一个产品列表或一个子类别列表。 (一个子类别是只有一个父类别的一个子类别。)

interface Category {
  objectID: string;
  name: string;
  subCategories: Category[];
}

我有以下设置来显示屏幕:

StackNavigation
- RootCategoriesScreen (has custom header, no back button)
- SubCategoriesScreen (has headers and back button)

SubCategoriesScreen按后退按钮时,如果此子类别不是根类别的子类别,则希望返回到父类别SubCategoriesScreen,否则请返回RootCategoriesScreen

在我当前的设置中,任何SubCategoriesScreen总是仅返回到RootCategoriesScreen。我尝试了许多github issueSO post和其他组合中的组合。

这是我拥有的代码,它不起作用:

/**
 * For recursive SubCategoryScreens, screen ID is the same, 
 * so react-navigation takes to CategoriesRootScreen from any nested sub-category screen
 */    
_goBack = navigation => {
      console.log(`Back button pressed from a subCategory screen`);
      //navigation.goBack(null);
      navigation.dispatch(
        NavigationActions.back({
          key: null
        })
      );
    };

    SubCategoryScreen.navigationOptions = ({ navigation }) => ({
      title: navigation.getParam("category").name,
      headerLeft: <HeaderBackButton onPress={() => _goBack(navigation)} />
    });

我已经了解到问题是反应导航如何推断屏幕身份,即对于递归SubCategoryScreens,屏幕ID(navigation.state.key)相同,因此反应导航从任何嵌套的子类别屏幕进入CategoriesRootScreen

我没有得到什么?该如何解决?

0 个答案:

没有答案