`redirect()` från `next/navigation` kan bara anropas i server-komponenter och Server Actions, inte i klientkomponenter.
Förklaring
redirect() är en server-side funktion som avbryter rendering och skickar ett HTTP 307-svar. Den fungerar inte i klientkomponenter eftersom det inte finns någon HTTP-response att arbeta med i webbläsarens kontext.
För navigering i klientkomponenter används useRouter och dess metoder push(), replace(), eller back().
Vanliga orsaker
redirect() anropad direkt i en 'use client'-komponent. Kod kopierad från en server-komponent till en klientkomponent utan anpassning.
Lösning
Använd useRouter för programmatisk navigering i klientkomponenter:
// Fel — kraschar i klientkomponent
import { redirect } from 'next/navigation';
'use client';
export default function Form() {
const handleSubmit = () => redirect('/tack'); // fungerar inte
}
// Rätt
'use client';
import { useRouter } from 'next/navigation';
export default function Form() {
const router = useRouter();
const handleSubmit = () => router.push('/tack');
}