Next.js <Redirect />

A <Redirect /> component like the one from react-router v5.

typescriptjavascript
import { useRouter } from 'next/router'
 
interface RedirectProps {
  to: string
  replace?: boolean
}
 
const Redirect: React.FC<RedirectProps> = ({ to, replace }) => {
  const router = useRouter()
 
  useEffect(() => {
    router[replace ? 'replace' : 'push'](to)
  }, [to, replace])
 
  return null
}
import { useRouter } from 'next/router'
 
const Redirect = ({ to, replace }) => {
  const router = useRouter()
 
  useEffect(() => {
    router[replace ? 'replace' : 'push'](to)
  }, [to, replace])
 
  return null
}

Usage

typescriptjavascript
const Example = () => {
  // Get authentication state from somewhere
  const { loggedIn } = useAuth()
 
  if (!loggedIn) return <Redirect to="/login" />
 
  return <ProtectedContent />
}
const Example = () => {
  // Get authentication state from somewhere
  const { loggedIn } = useAuth()
 
  if (!loggedIn) return <Redirect to="/login" />
 
  return <ProtectedContent />
}
Created 02/04/21Updated 18/03/23
Found a mistake, or want to suggest an improvement? Source on GitHub here
and see edit history here