我的产品类别是多层次的。
我创建了一个可重用的Categories Screen
,它渲染flatList中的第一层。如果我点击某个类别,它会导航到同一个Categories Screen
,并传递到第二层,依此类推。
添加产品屏幕〉类别屏幕(L1)〉类别屏幕(L2)〉类别屏幕(L3)
问题是当我在(L3)中按navigation.goBack()
时,它会把我带回到Product Screen
,我猜这是“根”。
相反,我更希望goBack
带我到L2。
我假设它不会,因为我重用了同一个屏幕,但我不知道如何嵌套单个屏幕并维护堆栈历史而不覆盖它自己。
这是导航器:
<Stack.Navigator ...>
<Stack.Screen
component={ProductScreen}
name="ProductScreen"
/>
<Stack.Screen
component={CategoryScreen}
name="CategoryScreen"
/>
</Stack.Navigator>
这是类别屏幕:
export const CategoryScreen = ({ navigation }: ScreenProps) => {
const renderItem: ListRenderItem<string> = ({item}) => {
...
<Pressable onPress={() => handleCategoryPress()}>
...
</Pressable>
);
};
return (
<ScreenContainer goBack={navigation.goBack}>
<FlatList data={categories} renderItem={renderItem} />
</ScreenContainer>
);
function handleCategoryPress() {
...
navigation.navigate(
'CategoryScreen',
{ categories: filteredCategories, level: nextLevel },
);
}
};
以下是我的版本:
"@react-navigation/native": "^6.0.6",
"@react-navigation/native-stack": "^6.2.5",
"react-native": "0.70.5",
先谢谢你。
1条答案
按热度按时间v64noz0r1#
我设法修复了将
navigation.navigate
更改为navigate.push
的问题: