fix: 页面导航问题修复

This commit is contained in:
Junhui Chen 2025-08-04 20:02:57 +08:00
parent 683df4a7c1
commit 0061a655ef
3 changed files with 27 additions and 6 deletions

View File

@ -1,5 +1,5 @@
import { Asset } from 'expo-asset';
import { useRouter } from 'expo-router';
import { useLocalSearchParams, useRouter } from 'expo-router';
import * as SplashScreen from 'expo-splash-screen';
import React, { useCallback, useEffect, useRef, useState } from 'react';
import { FlatList, InteractionManager, PixelRatio, Platform, RefreshControl, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
@ -48,6 +48,16 @@ const MemoList = () => {
const [isLoading, setIsLoading] = useState(true);
const flatListRef = useRef<FlatList>(null);
const { t } = useTranslation();
const { next } = useLocalSearchParams<{ next: string }>();
useEffect(() => {
if (next) {
// 使用 InteractionManager 确保在动画和交互完成后执行
InteractionManager.runAfterInteractions(() => {
router.replace(next as any);
});
}
}, [next, router]);
// 从缓存或API获取数据
const fetchHistoryList = useCallback(async (forceRefresh = false) => {

View File

@ -24,6 +24,7 @@ export default function UserMessage() {
// 获取路由参数
const params = useLocalSearchParams();
const { username: usernameParam } = params;
const { from } = useLocalSearchParams<{ from?: string }>();
useEffect(() => {
checkAuthStatus(router);
@ -47,11 +48,17 @@ export default function UserMessage() {
})
}).then(() => {
setIsLoading(false);
setSteps('done');
}).catch(() => {
if (from) {
router.replace(from as any);
} else {
router.replace('/ask');
}
}).catch((error: any) => {
console.error('Failed to save user info:', error);
setIsLoading(false);
});
};
useEffect(() => {
getUserInfo();
setSteps("userName")

View File

@ -47,12 +47,16 @@ const Login = ({ updateUrlParam, setError, setShowPassword, showPassword }: Logi
login({ ...res, email: res?.account }, res.access_token || '');
const userInfo = await fetchApi<User>("/iam/user-info");
if (userInfo?.nickname) {
router.replace('/ask');
router.replace({ pathname: '/memo-list', params: { next: '/ask' } });
} else {
router.replace('/user-message');
router.replace({ pathname: '/user-message', params: { from: '/memo-list' } });
}
} catch (error) {
setError(error.message || t('auth.login.loginError', { ns: 'login' }));
if (error instanceof Error) {
setError(error.message);
} else {
setError(String(error) || t('auth.login.loginError', { ns: 'login' }));
}
} finally {
setIsLoading(false);
}