fix: 页面导航问题修复
This commit is contained in:
parent
683df4a7c1
commit
0061a655ef
@ -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) => {
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user