Я хочу, чтобы приложение отображало страницу регистрации, если пользователь не вошел в систему. Но проблема сейчас в том, что при загрузке приложения оно загружает экран стека, но с тем же содержимым и макетом, что и экраны ящика. Это означает, что страница регистрации никогда не загружается. В моем DataContext я намеренно сделал пользователя логическим значением и установил для него значение false, чтобы страница регистрации загружалась, но при этом она по-прежнему загружала стек, но с экраном ящика. Мне пришлось изменить пользователя на true и обратно на false, чтобы страница регистрации теперь загружалась. Я не совсем знаком с новым маршрутизатором на основе файлов Expo, а также со стеками, ящиками и слотами. Поэтому мне нужна помощь.
import {
DarkTheme,
DefaultTheme,
ThemeProvider,
} from "@react-navigation/native";
import { useFonts } from "expo-font";
import { useRouter, useFocusEffect, Stack } from "expo-router";
import * as SplashScreen from "expo-splash-screen";
import { useEffect, useCallback, useContext, useState } from "react";
import "react-native-reanimated";
import { useColorScheme } from "@/hooks/useColorScheme";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import { Drawer } from "expo-router/drawer";
import DataProvider, { DataContext } from "@/dataContext/DataContext";
import { MaterialIcons } from "@expo/vector-icons";
import { getFocusedRouteNameFromRoute } from "@react-navigation/native";
// Prevent the splash screen from auto-hiding before asset loading is complete.
SplashScreen.preventAutoHideAsync();
function AunthenticatedDrawer() {
const colorScheme = useColorScheme();
const router = useRouter();
const updateHeaderTitle = useCallback((navigation, route) => {
useFocusEffect(
useCallback(() => {
const routeName = getFocusedRouteNameFromRoute(route) ?? "Home";
let title = "";
switch (routeName) {
case "index":
title = "Questions";
break;
case "myCourses":
title = "My Courses";
break;
case "inbox":
title = "Messages";
break;
case "creator":
title = "Create";
break;
case "profile":
title = "Profile";
break;
default:
break;
}
navigation.setOptions({ title: title });
}, [navigation, route])
);
}, []);
return (
(
router.push("/notifications")}
/>
),
}}
>
{
updateHeaderTitle(navigation, route);
return { drawerLabel: "Home", title: "" };
}}
/>
);
}
function UnAuthenticatedStack() {
return (
);
}
function RootLayout() {
const colorScheme = useColorScheme();
const [loaded] = useFonts({
SpaceMono: require("../assets/fonts/SpaceMono-Regular.ttf"),
});
const { user } = useContext(DataContext);
useEffect(() => {
if (loaded) {
SplashScreen.hideAsync();
}
}, [loaded]);
if (!loaded) {
return null;
}
return (
{user ? : }
);
}
export default function AppLayout() {
return (
);
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -is-not-lo
Каков наилучший способ условного отображения страницы регистрации, если пользователь не зарегистрировал ее в новом маршр ⇐ Android
Форум для тех, кто программирует под Android
1730320263
Anonymous
Я хочу, чтобы приложение отображало страницу регистрации, если пользователь не вошел в систему. Но проблема сейчас в том, что при загрузке приложения оно загружает экран стека, но с тем же содержимым и макетом, что и экраны ящика. Это означает, что страница регистрации никогда не загружается. В моем DataContext я намеренно сделал пользователя логическим значением и установил для него значение false, чтобы страница регистрации загружалась, но при этом она по-прежнему загружала стек, но с экраном ящика. Мне пришлось изменить пользователя на true и обратно на false, чтобы страница регистрации теперь загружалась. Я не совсем знаком с новым маршрутизатором на основе файлов Expo, а также со стеками, ящиками и слотами. Поэтому мне нужна помощь.
import {
DarkTheme,
DefaultTheme,
ThemeProvider,
} from "@react-navigation/native";
import { useFonts } from "expo-font";
import { useRouter, useFocusEffect, Stack } from "expo-router";
import * as SplashScreen from "expo-splash-screen";
import { useEffect, useCallback, useContext, useState } from "react";
import "react-native-reanimated";
import { useColorScheme } from "@/hooks/useColorScheme";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import { Drawer } from "expo-router/drawer";
import DataProvider, { DataContext } from "@/dataContext/DataContext";
import { MaterialIcons } from "@expo/vector-icons";
import { getFocusedRouteNameFromRoute } from "@react-navigation/native";
// Prevent the splash screen from auto-hiding before asset loading is complete.
SplashScreen.preventAutoHideAsync();
function AunthenticatedDrawer() {
const colorScheme = useColorScheme();
const router = useRouter();
const updateHeaderTitle = useCallback((navigation, route) => {
useFocusEffect(
useCallback(() => {
const routeName = getFocusedRouteNameFromRoute(route) ?? "Home";
let title = "";
switch (routeName) {
case "index":
title = "Questions";
break;
case "myCourses":
title = "My Courses";
break;
case "inbox":
title = "Messages";
break;
case "creator":
title = "Create";
break;
case "profile":
title = "Profile";
break;
default:
break;
}
navigation.setOptions({ title: title });
}, [navigation, route])
);
}, []);
return (
(
router.push("/notifications")}
/>
),
}}
>
{
updateHeaderTitle(navigation, route);
return { drawerLabel: "Home", title: "" };
}}
/>
);
}
function UnAuthenticatedStack() {
return (
);
}
function RootLayout() {
const colorScheme = useColorScheme();
const [loaded] = useFonts({
SpaceMono: require("../assets/fonts/SpaceMono-Regular.ttf"),
});
const { user } = useContext(DataContext);
useEffect(() => {
if (loaded) {
SplashScreen.hideAsync();
}
}, [loaded]);
if (!loaded) {
return null;
}
return (
{user ? : }
);
}
export default function AppLayout() {
return (
);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79117117/what-is-the-best-way-to-conditionally-render-a-signup-page-if-the-user-is-not-lo[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия