使用expo-router、expo 51、react native等
我有以下导航结构
标签栏
在某些情况下,您可以点击 /home 中的某些内容,应用程序将使用以下方法将您导航到 /messages/[id]:
navigation.navigate('(messages)', {
screen: '[userId]',
params: {
userId: message.user.id,
},
});
和(消息)/_layout.tsx
export default function MessagesTab() {
return (
<Stack>
<Stack.Screen name="index" />
<Stack.Screen name="[userId]" options={{
headerBackTitle: 'Messages',
}} />
</Stack>
);
};
这按预期工作。但是,如果用户在执行此操作之前从未点击“消息”选项卡,则 /messages 将不会存在于导航堆栈中,并且将变得无法访问。
我正在努力做到以下几点: (messages)/index 如果不存在,则在压入 slug 时将其压入堆栈。这样,无论您是否点击了选项卡,后栏项目都会始终显示。
它有点隐藏在文档中,因为
initial
的顺序似乎很重要,无论是在参数之前还是之后。
navigation.navigate('(messages)', {
screen: '[userId]',
initial: false,
params: {
userId: message.user.id,
},
});