// app/layout.tsx
export default function Layout(props: {
children: React.ReactNode
analytics: React.ReactNode
team: React.ReactNode
}) {
return (
<>
{props.children}
{props.team}
{props.analytics}
</>
)
}
app/@children/page.js 와 동일합니다.
useSelectedLayoutSegment
및 useSelectedLayoutSegments
는 모두 해당 슬롯 내에서 활성 경로 세그먼트를 읽을 수 있도록 하는parallelRoutesKey를 허용합니다.'use client'
import { useSelectedLayoutSegment } from 'next/navigation'
export default async function Layout(props: {
//...
auth: React.ReactNode
}) {
const loginSegments = useSelectedLayoutSegment('auth')
// ...
}
<Modal>
컴포넌트를 렌더링합니다.// app/layout.tsx
export default async function Layout(props: {
// ...
auth: React.ReactNode
}) {
return (
<>
{/* ... */}
{props.auth}
</>
)
}
// app/@auth/login/page.tsx
import { Modal } from 'components/modal'
export default function Login() {
return (
<Modal>
<h1>Login</h1>
{/* ... */}
</Modal>
)
}
// app/@auth/default.tsx
export default function Default() {
return null
}
<Link href="/login">
을 사용하면 router.back()을 호출하거나 Link 컴포넌트를 사용하여 모달을 해제할 수 있습니다.// app/@auth/default.tsx
export default function Default() {
return null
}
// app/@auth/[...catchAll]/page.tsx
export default function CatchAll() {
return null
}
// app/layout.tsx
import { getUser } from '@/lib/auth'
export default function Layout({
dashboard,
login,
}: {
dashboard: React.ReactNode
login: React.ReactNode
}) {
const isLoggedIn = getUser()
return isLoggedIn ? dashboard : login
}