我有一个简单的应用程序,其中包含一个 index.tsx 文件和
"/app"
下的布局。我也有一个身份验证上下文。如果我将两个重定向都保留在 index.tsx 中,则控制台日志始终为我提供 null 并且渲染仅发生一次。否则,如果我删除它们,即使成功并且用户已加载,我也会收到日志。
import React, { type ReactNode } from "react";
import { useAuthContext } from "@/contexts/AuthContext";
import { Redirect } from "expo-router";
import { Role } from "@/types/auth";
const Page = (): ReactNode => {
const { status, user } = useAuthContext();
console.log(status, user);
if (user?.role.id === Role.Business) return <Redirect href={"/(business)"} />;
return <Redirect href={"/(user)"} />;
};
export default Page;
特别是,我希望当在上下文中(登录用户)分配用户值时,它将使用新值再次渲染index.tsx。这种情况发生,但只有当我在index.tsx 中没有两个重定向时才会发生。如果我放置一个空的普通堆栈,它会呈现给我两次,第一次为 null,因为它处于挂起状态,第二次成功为用户的值。
我想我明白你想要实现的目标:获取当前的身份验证状态,并在它随新值或状态变化时重新渲染。我不太明白你的问题的上下文,但似乎
return <Redirect href={"/({})"}
被返回两次或相互影响。也许尝试条件(三元)运算符。