如何定义与index.tsx不同的默认堆栈

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

使用 React Native Expo Router,我想定义一个与 index.tsx 不同的默认堆栈。目前,当我启动一个带有名为 page1.tsx 的简单堆栈的应用程序时,expo router 找不到它并显示“不匹配的路线(我找不到页面)”。

要重现该问题,

  • npx create-expo-app@latest
  • npm 运行重置项目

并更改以下2个文件:

在应用程序文件夹中:

_layout.tsx

page1.tsx

_layout.tsx 文件:

import { Stack } from "expo-router";

export default function RootLayout() {
  return (
    <Stack>
      <Stack.Screen name="page1" options={{ title: "P1" }} />
    </Stack>
  );
}

page1.tsx 文件:

import { Text, View } from "react-native";

export default function Index() {
  return (
    <View
      style={{
        flex: 1,
        justifyContent: "center",
        alignItems: "center",
      }}
    >
      <Text>Edit app/index.tsx to edit this screen.</Text>
    </View>
  );
}

package.json:

"dependencies": {
    "expo": "~52.0.19",
    "expo-router": "~4.0.13",
    "expo-web-browser": "~14.0.1",
    "react": "18.3.1",
    "react-dom": "18.3.1",
    "react-native": "0.76.5",
react-native expo expo-router
1个回答
0
投票

Expo Router 使用基于文件的路由,就像传统网站一样。索引文件是您的应用程序/特定目录的默认条目。

如果您出于某种原因想使用“page1”作为默认条目文件,有两种方法可以实现此目的:

  1. 更简单的方式。您可以创建一个索引文件,将 Redirect 返回到“/page1”
  2. 您可以使用“不稳定设置”来根据您的期望重新定义 Expo 路由器行为。您可以将堆栈上的 initialRouteName 设置为“page1”,这应该会导致它像索引一样工作。
© www.soinside.com 2019 - 2024. All rights reserved.