app.js

import React from 'react'; import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; import { FinanceProvider } from './contexts/FinanceContext'; import Navbar from './components/Navbar'; import Sidebar from './components/Sidebar'; import Home from './pages/Home'; import Expenses from './pages/Expenses'; // import Budget from './pages/Budget'; import Investments from './pages/Investments'; // import Goals from './pages/Goals'; // import ReportsPage from './pages/ReportsPage'; import './index.css'; import Login from './components/Login'; // Component kiểm tra quyền truy cập const ProtectedRoute = ({ children }) => { const token = localStorage.getItem('token'); return token ? children : ; }; function AppLayout() { // Layout chung cho các trang yêu cầu đăng nhập: return (
} /> } /> } /> {/* } /> */} } /> {/* } /> */} {/* } /> */} {/* Nếu muốn thêm routes khác hãy thêm ở đây */}
); } const App = () => { return ( {/* Trang login độc lập, không dùng sidebar, navbar */} } /> {/* Đóng gói layout chung với kiểm tra token*/} } /> {/* Nếu muốn redirect trang root, có thể chuyển thành: */} {/* } /> */} ); }; export default App;
Huyền

Một Blog Anime chia sẻ những bộ anime hay download về để xem chất lượng cao nhất. neyuhv.blogspot.com does not host any files, it merely links to 3rd party services. Legal issues should be taken up with the file hosts and providers. neyuhv.blogspot.com is not responsible for any media files shown by the video providers.

Mới hơn Cũ hơn