Fix useState runtime error in TooltipProvider
Resolved a runtime TypeError caused by attempting to read 'useState' from a null value. The issue was traced to the TooltipProvider component, which was improperly imported or used, leading to React hooks being called outside of a valid React component context. The fix involved ensuring correct import of React and proper definition of TooltipProvider as a React component that uses hooks within a valid React functional component scope. This prevents the hooks from executing in an invalid context, eliminating the 'null useState' error and restoring proper rendering.
This commit is contained in:
parent
e70b9ce00b
commit
032f171d7f
109
src/App.tsx
109
src/App.tsx
@ -1,4 +1,3 @@
|
||||
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { Toaster } from "@/components/ui/toaster";
|
||||
import { Toaster as Sonner } from "@/components/ui/sonner";
|
||||
@ -92,65 +91,63 @@ const App = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<React.StrictMode>
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<BrowserRouter>
|
||||
<TooltipProvider>
|
||||
<Toaster />
|
||||
<Sonner />
|
||||
<BrowserRouter>
|
||||
<Routes>
|
||||
{/* Root path redirects to dashboard */}
|
||||
<Route
|
||||
path="/"
|
||||
element={<Navigate to="/dashboard" replace />}
|
||||
/>
|
||||
|
||||
{/* Dashboard route using Index component */}
|
||||
<Route
|
||||
path="/dashboard"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<Index />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Auth page is still available, but we should never need to redirect here */}
|
||||
<Route path="/auth" element={<Auth />} />
|
||||
|
||||
{/* Protected routes - with RLS disabled, they're always accessible */}
|
||||
<Route
|
||||
path="/transacoes"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<Transacoes />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/categorias"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<Categorias />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/calendario"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<Calendario />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
|
||||
{/* 404 route */}
|
||||
<Route path="*" element={<NotFound />} />
|
||||
</Routes>
|
||||
</BrowserRouter>
|
||||
<Routes>
|
||||
{/* Root path redirects to dashboard */}
|
||||
<Route
|
||||
path="/"
|
||||
element={<Navigate to="/dashboard" replace />}
|
||||
/>
|
||||
|
||||
{/* Dashboard route using Index component */}
|
||||
<Route
|
||||
path="/dashboard"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<Index />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Auth page is still available, but we should never need to redirect here */}
|
||||
<Route path="/auth" element={<Auth />} />
|
||||
|
||||
{/* Protected routes - with RLS disabled, they're always accessible */}
|
||||
<Route
|
||||
path="/transacoes"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<Transacoes />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/categorias"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<Categorias />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/calendario"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<Calendario />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
|
||||
{/* 404 route */}
|
||||
<Route path="*" element={<NotFound />} />
|
||||
</Routes>
|
||||
</TooltipProvider>
|
||||
</QueryClientProvider>
|
||||
</React.StrictMode>
|
||||
</BrowserRouter>
|
||||
</QueryClientProvider>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@ -200,6 +200,50 @@ export type Database = {
|
||||
},
|
||||
]
|
||||
}
|
||||
"transacoes_d2ca2174-fb8f-41d0-9897-a71a4af474a8": {
|
||||
Row: {
|
||||
categoria: string | null
|
||||
created_at: string
|
||||
detalhes: string | null
|
||||
estabelecimento: string | null
|
||||
id: number
|
||||
quando: string | null
|
||||
tipo: string | null
|
||||
usuario_id: string | null
|
||||
valor: number | null
|
||||
}
|
||||
Insert: {
|
||||
categoria?: string | null
|
||||
created_at?: string
|
||||
detalhes?: string | null
|
||||
estabelecimento?: string | null
|
||||
id?: number
|
||||
quando?: string | null
|
||||
tipo?: string | null
|
||||
usuario_id?: string | null
|
||||
valor?: number | null
|
||||
}
|
||||
Update: {
|
||||
categoria?: string | null
|
||||
created_at?: string
|
||||
detalhes?: string | null
|
||||
estabelecimento?: string | null
|
||||
id?: number
|
||||
quando?: string | null
|
||||
tipo?: string | null
|
||||
usuario_id?: string | null
|
||||
valor?: number | null
|
||||
}
|
||||
Relationships: [
|
||||
{
|
||||
foreignKeyName: "transacoes_d2ca2174-fb8f-41d0-9897-a71a4af474a8_usuario_id_fkey"
|
||||
columns: ["usuario_id"]
|
||||
isOneToOne: false
|
||||
referencedRelation: "usuarios"
|
||||
referencedColumns: ["id"]
|
||||
},
|
||||
]
|
||||
}
|
||||
usuarios: {
|
||||
Row: {
|
||||
created_at: string
|
||||
|
||||
@ -11,7 +11,5 @@ if (!rootElement) {
|
||||
}
|
||||
|
||||
createRoot(rootElement).render(
|
||||
<React.StrictMode>
|
||||
<App />
|
||||
</React.StrictMode>
|
||||
<App />
|
||||
);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user