You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

expo-router@2:自定义选项导致同路由导航动画异常

Expo Router v2 同路由导航动画异常问题(自定义屏幕选项导致)

在使用expo-router@2时,遇到一个问题:当给动态路由/[id]设置自定义屏幕选项后,在相同路由模板(从/[id]跳转到另一个参数的/[id])间导航时,页面切换动画出现异常。

效果对比:

  • 无自定义屏幕选项:
    无自定义屏幕选项的正常动画
  • 有自定义屏幕选项:
    有自定义屏幕选项的异常动画

相关代码

/app/index.js

export default function Page() {
  const router = useRouter();

  return (
    <View>
      <TouchableOpacity
        onPress={() => router.push({
          pathname: "/[id]",
          params: { id: Math.round(Math.random() * 1000) },
        })}
      >
        <Text>Go inside</Text>
      </TouchableOpacity>
    </View>
  );
}

/app/[id].js

export default function Page() {
  const router = useRouter();
  const { id } = useLocalSearchParams();

  return (
    <View>
      <TouchableOpacity
        onPress={() => router.push({
          pathname: "/[id]",
          params: { id: Math.round(Math.random() * 1000) },
        })}
      >
        <Text>Go deeper</Text>
      </TouchableOpacity>
      <View>
        <Text>{id}</Text>
      </View>
    </View>
  );
}

/app/_layout.js

export default function Layout() {
  return (
    <Stack>
      {/* 取消注释以下代码后,默认导航行为会被破坏: */}
      {/* <Stack.Screen
        name="[id]"
        options={{
          title: "title",
        }}
      /> */}
    </Stack>
  );
}

复现方式

由于Expo Snack仅支持SDK<=48,而expo-router@2仅在SDK 49中可用,无法创建在线Snack示例,已准备好最小可复现的本地示例仓库。

内容的提问来源于stack exchange,提问作者Nikolay Solovyov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:16:25