Экран стека выставки не работает. Не загружается страница входа в систему при первой загрузке в зависимости от порядка первой загрузки экрана (вкладки). Когда я пытаюсь сначала загрузить экран входа в систему, изменив порядок экранов, я не могу его изменить. Я очистил улов и сделал все возможное, пожалуйста, помогите мне. Вот мой _layout.tsx
import FontAwesome from '@expo/vector-icons/FontAwesome';
import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native';
import { useFonts } from 'expo-font';
import { SplashScreen, Stack } from 'expo-router';
import { useEffect } from 'react';
import { useColorScheme } from 'react-native';
import { RootSiblingParent } from 'react-native-root-siblings';
import SignInPage from './screens/Login';
export {
// Catch any errors thrown by the Layout component.
ErrorBoundary,
} from 'expo-router';
// export const unstable_settings = {
// // Ensure that reloading on `/modal` keeps a back button present.
// initialRouteName: '(tabs)',
// };
export default function RootLayout() {
const [loaded, error] = useFonts({
SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'),
...FontAwesome.font,
});
// Expo Router uses Error Boundaries to catch errors in the navigation tree.
useEffect(() => {
if (error) throw error;
}, [error]);
return (
{/* Keep the splash screen open until the assets have loaded. In the future, we should just support async font loading with a native version of font-display. */}
{!loaded && }
{loaded &&
}
);
}
function RootLayoutNav() {
const colorScheme = useColorScheme();
return (
);
}
Login.tsx
import React, { useState } from 'react';
import { View, TextInput, Text, StyleSheet } from 'react-native';
import { TouchableOpacity } from 'react-native-gesture-handler';
import PasswordInput from '../../components/user/PasswordInput';
import { getAuth, signInWithEmailAndPassword } from 'firebase/auth';
import { Link, useRouter,Stack } from 'expo-router';
import Toast from 'react-native-root-toast';
import { FirebaseError } from 'firebase/app';
const SignInPage = () => {
const router = useRouter();
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const handleSignIn = async () => {
try {
const auth = getAuth();
await signInWithEmailAndPassword(auth, email, password);
// Handle successful sign-in
console.log('User signed in successfully');
// router.push('../../one');
// Perform any other necessary actions after successful sign-in
} catch (error) {
// Function to format Firebase error codes to user-friendly messages
const formatErrorMessage = (error :any) => {
switch (error.code) {
case 'auth/invalid-email':
return 'Invalid email address. Please enter a valid email.';
case 'auth/user-disabled':
return 'Your account has been disabled. Please contact support.';
case 'auth/user-not-found':
case 'auth/wrong-password':
return 'Invalid email or password. Please check your credentials.';
// Add more error codes and corresponding messages as needed
default:
return 'An error occurred. Please try again later.';
}
};
// Handle sign-in error
const firebaseError = error as FirebaseError;
const errorMessage = formatErrorMessage(firebaseError);
let toast = Toast.show(`Sign-in error: ${errorMessage}`, {
duration: Toast.durations.LONG,
});
// If you want to use console.error for debugging
// console.error('Sign-in error:', error);
// Add any necessary error handling logic or display error message to the user
}
};
return (
Sign In
New User? Sign Up
Forgot Password
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'white',
justifyContent: 'center',
alignItems: 'center',
padding: 16,
},
box: {
width: '90%',
borderRadius: 4,
backgroundColor: 'white',
},
input: {
width: '100%',
marginBottom: 12,
padding: 8,
borderWidth: 1,
borderRadius: 4,
},
buttonContainer: {
backgroundColor: '#4287f5',
justifyContent: 'center',
alignItems: 'center',
borderRadius: 20,
paddingVertical: 10,
paddingHorizontal: 20,
},
buttonText: {
color: '#fff',
fontSize: 16,
fontWeight: 'bold',
},
});
export default SignInPage;
Подробнее здесь: https://stackoverflow.com/questions/765 ... d-on-order
Экран стека маршрутизатора Expo не работает в зависимости от заказа ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1764185087
Anonymous
Экран стека выставки не работает. Не загружается страница входа в систему при первой загрузке в зависимости от порядка первой загрузки экрана (вкладки). Когда я пытаюсь сначала загрузить экран входа в систему, изменив порядок экранов, я не могу его изменить. Я очистил улов и сделал все возможное, пожалуйста, помогите мне. Вот мой _layout.tsx
import FontAwesome from '@expo/vector-icons/FontAwesome';
import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native';
import { useFonts } from 'expo-font';
import { SplashScreen, Stack } from 'expo-router';
import { useEffect } from 'react';
import { useColorScheme } from 'react-native';
import { RootSiblingParent } from 'react-native-root-siblings';
import SignInPage from './screens/Login';
export {
// Catch any errors thrown by the Layout component.
ErrorBoundary,
} from 'expo-router';
// export const unstable_settings = {
// // Ensure that reloading on `/modal` keeps a back button present.
// initialRouteName: '(tabs)',
// };
export default function RootLayout() {
const [loaded, error] = useFonts({
SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'),
...FontAwesome.font,
});
// Expo Router uses Error Boundaries to catch errors in the navigation tree.
useEffect(() => {
if (error) throw error;
}, [error]);
return (
{/* Keep the splash screen open until the assets have loaded. In the future, we should just support async font loading with a native version of font-display. */}
{!loaded && }
{loaded &&
}
);
}
function RootLayoutNav() {
const colorScheme = useColorScheme();
return (
);
}
Login.tsx
import React, { useState } from 'react';
import { View, TextInput, Text, StyleSheet } from 'react-native';
import { TouchableOpacity } from 'react-native-gesture-handler';
import PasswordInput from '../../components/user/PasswordInput';
import { getAuth, signInWithEmailAndPassword } from 'firebase/auth';
import { Link, useRouter,Stack } from 'expo-router';
import Toast from 'react-native-root-toast';
import { FirebaseError } from 'firebase/app';
const SignInPage = () => {
const router = useRouter();
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const handleSignIn = async () => {
try {
const auth = getAuth();
await signInWithEmailAndPassword(auth, email, password);
// Handle successful sign-in
console.log('User signed in successfully');
// router.push('../../one');
// Perform any other necessary actions after successful sign-in
} catch (error) {
// Function to format Firebase error codes to user-friendly messages
const formatErrorMessage = (error :any) => {
switch (error.code) {
case 'auth/invalid-email':
return 'Invalid email address. Please enter a valid email.';
case 'auth/user-disabled':
return 'Your account has been disabled. Please contact support.';
case 'auth/user-not-found':
case 'auth/wrong-password':
return 'Invalid email or password. Please check your credentials.';
// Add more error codes and corresponding messages as needed
default:
return 'An error occurred. Please try again later.';
}
};
// Handle sign-in error
const firebaseError = error as FirebaseError;
const errorMessage = formatErrorMessage(firebaseError);
let toast = Toast.show(`Sign-in error: ${errorMessage}`, {
duration: Toast.durations.LONG,
});
// If you want to use console.error for debugging
// console.error('Sign-in error:', error);
// Add any necessary error handling logic or display error message to the user
}
};
return (
Sign In
New User? Sign Up
Forgot Password
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'white',
justifyContent: 'center',
alignItems: 'center',
padding: 16,
},
box: {
width: '90%',
borderRadius: 4,
backgroundColor: 'white',
},
input: {
width: '100%',
marginBottom: 12,
padding: 8,
borderWidth: 1,
borderRadius: 4,
},
buttonContainer: {
backgroundColor: '#4287f5',
justifyContent: 'center',
alignItems: 'center',
borderRadius: 20,
paddingVertical: 10,
paddingHorizontal: 20,
},
buttonText: {
color: '#fff',
fontSize: 16,
fontWeight: 'bold',
},
});
export default SignInPage;
Подробнее здесь: [url]https://stackoverflow.com/questions/76504474/expo-router-stack-screen-not-working-based-on-order[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия