1

I have a server-rendered page in a Next.js application and I want to check a condition and redirect to another page. See the code below to understand better:

// This is a server-rendered page
export default async function Packs() {
  const cookiesStore = cookies()
  const token = cookiesStore.get('token')?.value
  const gameInfo = await getGameInfo()
  const user = await getUserContextFromToken(token || "") as UserContext
  const theme = getThemeForLevel(user?.level || 1)
  if (isEmpty(user)) {
    // Instead of sending the home page we should be able to redirect
    return <HomePage sessionExpired={true} user={null} theme={theme} totalLevels={gameInfo.totalLevels} />
    // return NextResponse.redirect(AppRoutes.home, 302); // (is something like this possible)
  }
  return (
    <PacksPage theme={theme} currentLevel={user.level} packSize={gameInfo.packSize} totalLevels={gameInfo.totalLevels} />
  );
}
Youssouf Oumar
  • 29,373
  • 11
  • 46
  • 65

1 Answers1

1

You can use the redirect function from next/navigation, as an example like so:

// app/page.js

import { redirect } from 'next/navigation'

export default async function Page() {
  const res = await fetch('https://...')
  if (!res.ok) {
    redirect('/login')
  }
 
  // ...
}
Youssouf Oumar
  • 29,373
  • 11
  • 46
  • 65