Estou tentando fazer uma verificação de usuário para navegar entre telas mas me deparo com esse erro:
enter image description here
ERROR Error: UserContext not found
This error is located at:
in App (at withDevTools.js:18)
in withDevTools(App) (at renderApplication.js:57)
in RCTView (at View.js:116)
in View (at AppContainer.js:127)
in RCTView (at View.js:116)
in View (at AppContainer.js:155)
in AppContainer (at renderApplication.js:50)
in main(RootComponent) (at renderApplication.js:67), js engine: hermes
esse é o meu código:
Tentei procurar em vários lugares, e não acho nada sobre isso, antes eu estava fazendo de modo diferente, não estava dando esse erro mas as renderizações das telas não estavam assim separadas, apenas com um if no mesmo bloco e as telas estavam aparecendo juntas. Mudei o codigo para resolver esse problema e isso começou a acontecer.
Não sei mais o que fazer, esse é o meu código:
import React, { useEffect, useState } from 'react';
import { View } from 'react-native';
import { ClerkProvider, SignedIn, SignedOut, useUser } from '@clerk/clerk-expo';
import { UserTypeSelection } from './src/screens/UserTypeSelection';
import { Login } from './src/screens/Login';
import { Home } from './src/screens/Home';
import { NavigationContainer } from '@react-navigation/native';
import { collection, getFirestore, query, where, getDocs } from 'firebase/firestore';
import { app } from './firebaseconfig';
import { AppRoutes } from './src/routes/app.routes';
export default function App() {
const { user } = useUser();
const [userTypeSelected, setUserTypeSelected] = useState(false);
const db = getFirestore(app); // Initialize Firestore
useEffect(() => {
const checkUserTypeSelection = async () => {
try {
if (user) {
const userInfoRef = collection(db, 'userInfo');
const q = query(userInfoRef, where('emailUser', '==', user.primaryEmailAddress.emailAddress));
const querySnapshot = await getDocs(q);
if (!querySnapshot.empty) {
setUserTypeSelected(true);
}
}
} catch (error) {
console.error('Erro ao verificar seleção do tipo de usuário:', error);
}
};
checkUserTypeSelection();
}, [user, db]); // Add db as a dependency of useEffect
return (
<ClerkProvider frontendApi="https://your-frontend-api.clerk.app">
<UserHandler user={user} userTypeSelected={userTypeSelected} />
</ClerkProvider>
);
}
function UserHandler({ user, userTypeSelected }) {
if (!user) {
// Usuário não autenticado, renderizar tela de login
return (
<SignedOut>
<Login />
</SignedOut>
);
}
if (!userTypeSelected) {
// Usuário autenticado, mas não selecionou o tipo, renderizar tela de seleção de tipo de usuário
return (
<NavigationContainer>
<SignedIn>
<UserTypeSelection />
</SignedIn>
</NavigationContainer>
);
}
// Usuário autenticado e selecionou o tipo, renderizar as rotas do aplicativo
return <AppRoutes />;
}
Sabrina Barros is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.