v2.5.2
Giriş yap

Bir react uygulamasında login sayfasında Navbar nasıl gizlenir?

emta55
303 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhaba, React ile bir web sayfası geliştiriyorum.
Aşağıda yazdığım şekilde değişken tanımlayarak url başlangıcında login var ise Navbar'ı gösterme demek mantıklı bir tercih midir?

    const isLoginOrSubPage = location.pathname.startsWith("/login");

return (
    <>
        {!isLoginOrSubPage && <Navbar />}
        <Routes>
        <Route exact path="/" element={<Home />} />
        <Route exact path="/admin-login" element={<Login />} />
    </>
    
Cevap yaz
Cevaplar (3)
hebele
485 gün önce

Bu gibi durumlar için Layout sistemini kullanın.

// main layout
import { Outlet } from 'react-router-dom';
import Header from '~/components/Header'
import Footer from '~/components/Footer'

const Layout = () => {
    return (
        <>
            <Header />
            <main>
                <Outlet />
            </main>
            <Footer />
        </>
    )
}

export default Layout
// auth layout
import { Outlet, Navigate } from 'react-router-dom';

const AuthLayout = () => {
    // kullanıcı oturum açmışsa,
    const isAuth = true;
    if(!isAuth) return <Navigate to="/" />
    return (
        <div class="auth">
            <Outlet />
        </div>
    )
}

export default AuthLayout
// React Router örnek kullanım:
// ...
// useRoutes için kullanım
const routes = [
    {
        path: '/',
        element: Layout, // nested route oluşturduk ve artık bu element içindeki elemanların parenti olacak.
        children: [
            {
                index: true,
                element: Home
            }
        ]
    },
    {
        path: '/auth',
        element: AuthLayout, // layout
        children: [
            {
                path: 'login',
                element: Login
            },
            {
                path: 'signup',
                element: Signup
            }
        ]
    }
]

return useRoutes(routes)

// jsx içinde kullanım

return (
    <Routes>
        <Route path="/" element={<Layout />} > {/* burada da aynı şekilde nested route oluşturduk ve artık bu element içindeki elemanların parenti olacak. */}
            <Route index={true} element={<Home />} />
        </Route>
        <Route path="/auth" element={<AuthLayout />}>
            <Route path="login" element={<Login />} />
            <Route path="signup" element={<Signup />} />
        </Route>
    </Routes>
)

İnşallah yardımcı olmuştur. Bir hata olursa yazabilirsin, detaylı kullanımlar için React Router'ın dokümanına göz atabilirsin.

emta55
485 gün önce

Dostlar sağolun. Sorunu yazdıktan sonra hebele arkadaşın dediği gibi yapabileceğimi öğrendim. Yardımınız için teşekkürler.

hakankorkz
486 gün önce

kişinin login olduğunun bilgisini session da tutuyorsanona göre aksiyon alabilirsiniz...