我正在使用一个约束,其中我有一些类别,每个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 issue,SO 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
我没有得到什么?该如何解决?