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

如何让Expo Router在Expo Go安卓端快速刷新后保留当前路由

解决Expo Router自动刷新后跳回首页的问题

试试下面几种配置方式,能让安卓Expo Go自动刷新后保留当前开发的路由:

  • 调整Metro配置
    在项目根目录的metro.config.js(没有的话直接新建)里添加以下配置,确保Metro能正确识别所有源码扩展名,同时开启Babel配置查找:

    const { getDefaultConfig } = require('expo/metro-config');
    
    const config = getDefaultConfig(__dirname);
    
    config.resolver.sourceExts.push('cjs');
    config.resolver.enableBabelRCLookup = true;
    
    module.exports = config;
    
  • 持久化路由状态
    在app/_layout.js(或_layout.tsx)里,通过本地存储保存当前路由,刷新后自动恢复:

    import { useRouter, useSegments } from 'expo-router';
    import AsyncStorage from '@react-native-async-storage/async-storage';
    import { useEffect } from 'react';
    
    export default function RootLayout() {
      const router = useRouter();
      const segments = useSegments();
    
      // 每次路由变化时保存到本地
      useEffect(() => {
        AsyncStorage.setItem('lastRoute', JSON.stringify(segments));
      }, [segments]);
    
      // 应用加载时恢复之前的路由
      useEffect(() => {
        const restoreRoute = async () => {
          const lastRoute = await AsyncStorage.getItem('lastRoute');
          if (lastRoute) {
            const parsedRoute = JSON.parse(lastRoute);
            // 避免重复跳首页
            if (parsedRoute.join('/') !== '') {
              router.replace(parsedRoute);
            }
          }
        };
        restoreRoute();
      }, []);
    
      // 这里放你原本的布局组件,比如<Stack />或者<Tabs />
    }
    
  • 临时禁用快速刷新(调试用)
    如果上面的方法都没效果,可以临时关掉快速刷新,在app.json里添加配置:

    {
      "expo": {
        "packagerOpts": {
          "nonPersistent": true
        }
      }
    }
    

    注意:这个方法会让刷新速度变慢,只适合临时调试用。

内容的提问来源于stack exchange,提问作者Vitor Figueredo Marques

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:06:03