Expo 路由器问题:React Native 中基于文件的路由出现不匹配的路由错误

问题描述 投票:0回答:1

我在 React Native 中遇到了一个令人沮丧的 Expo Router 问题。尽管设置了基于文件的路由,但我仍然收到“不匹配的路由”错误。我的目标是在用户未登录时将其引导至 AuthStack,在登录时将其引导至 MainStack。但是,我始终收到以下错误消息:

嵌套子级中不存在名为“login”的路由:[“(auth)/login”、“_sitemap”、“[...404]”]

这是我的 app/_layout.tsx 文件中的 RootLayout:


export default function RootLayout() {
const user = getUser();
  return user ? <MainStack /> : <AuthStack />;
}

这是 AuthStack 文件:



import { Stack } from "expo-router";

const AuthStack = () => {
  return (
    <Stack initialRouteName="login">
      <Stack.Screen name="login" options={{ headerShown: false }} />
    </Stack>
  );
};

导出默认AuthStack;

文件夹结构如下:

app/
  (auth)/
     login.tsx
  (main)/
     home.tsx
_layout.tsx

如果我将屏幕名称更改为“(auth)/登录”,错误就会消失,但随后它只会显示一个带有“不匹配的路由”的屏幕。如何正确配置用户在启动时定向到此屏幕?我尝试在应用程序布局中添加重定向,但随后出现了与之前相同的错误。

我还尝试在 (auth) 中添加 AuthLayout 并在那里添加 AuthStack,但它仍然没有在启动时打开该屏幕并显示不匹配的屏幕。

react-native navigation expo-router
1个回答
0
投票

要诊断您的问题,请尝试使用

在应用程序文件夹的根目录中创建简单的index.tsx
import { Text } from "react-native";

export default function Page() {
  return <Text>Home page</Text>;
}

并检查不匹配的路由是否消失 - 如果是这样,只需根据您的需要在此文件中创建重定向

import { Redirect } from "expo-router";

const Index = () => {
    return <Redirect href="/discussions" />;
};
export default Index;
© www.soinside.com 2019 - 2024. All rights reserved.