Каков наилучший способ условного отображения страницы регистрации, если пользователь не зарегистрировал ее в новом маршрAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Каков наилучший способ условного отображения страницы регистрации, если пользователь не зарегистрировал ее в новом маршр

Сообщение 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 (



);
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... -is-not-lo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»