[*]
< /ol>
Среда: < /strong> < /p>
- reauct in expo < /p>
reauct onfo < /li>
reauct onfo> Устройство) - vScode As IDE
- Среда разработки Windows
Структура кода:
PrettyPrint-Override ">
Код: Выделить всё
import React, { useEffect, useRef } from 'react';
import {
View,
Text,
StyleSheet,
Image,
StatusBar,
Animated as RNAnimated,
Dimensions
} from 'react-native';
import { LinearGradient } from 'expo-linear-gradient';
import * as Animatable from 'react-native-animatable';
import { useAppDispatch } from '../hooks/useRedux';
import { setCredentials } from '../store/slices/authSlice';
import { getUserData, getAuthToken } from '../utils/storage';
import colors from '../themes/colors';
const SplashScreen = ({ onFinish }: SplashScreenProps) => {
const dispatch = useAppDispatch();
// ...animated values initialization...
useEffect(() => {
const initializeApp = async () => {
try {
console.log('🚀 SplashScreen: Iniciando inicialização...');
// Animations setup...
// Check for existing authentication
const userData = await getUserData();
const token = await getAuthToken();
if (userData && token) {
dispatch(setCredentials({ user: userData, token }));
}
await new Promise(resolve => setTimeout(resolve, 3000));
onFinish();
} catch (error) {
console.error('❌ SplashScreen: Erro na inicialização:', error);
setTimeout(() => onFinish(), 1000);
}
};
initializeApp();
}, [dispatch, onFinish]);
// ...render method...
};
Код: Выделить всё
import React, { useState, useEffect, useRef } from 'react';
import { NavigationContainer, createNavigationContainerRef } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import AuthNavigator from './AuthNavigator';
import SimpleMainNavigator from './SimpleMainNavigator';
import { useAppSelector } from '../hooks/useRedux';
export const navigationRef = createNavigationContainerRef();
const Stack = createNativeStackNavigator();
export default function AppNavigator() {
const [isReady, setIsReady] = useState(false);
const [error, setError] = useState(null);
let isAuthenticated = false;
let darkMode = false;
try {
const authState = useAppSelector(state => state?.auth);
const themeState = useAppSelector(state => state?.theme);
isAuthenticated = Boolean(authState?.isAuthenticated);
darkMode = Boolean(themeState?.darkMode);
} catch (err) {
console.error('❌ AppNavigator: Error reading Redux state:', err);
setError('Erro ao carregar dados do aplicativo');
}
// ...navigation setup...
return (
setIsReady(true)}
fallback={}
>
{isAuthenticated ? (
) : (
)}
);
}
Код: Выделить всё
{
"expo": "~51.0.0",
"@react-navigation/native": "^6.0.0",
"@react-navigation/drawer": "^6.0.0",
"@reduxjs/toolkit": "^1.9.0",
"expo-linear-gradient": "~13.0.2",
"expo-secure-store": "~13.0.2",
"react-native-animatable": "^1.3.3",
"expo-blur": "~13.0.2"
}
[*] границы ошибок: добавлены блоки для переборок вокруг селекторов Redux и навигации
[*] Упрощенные компоненты: Stelected Completry и Animation [*] [*] [*] Вопросы:
Как я могу эффективно отладить этот аварий? logcat , который покажет фактическую трассу стека с аварий? Point? Господнее.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -message-e