Każdy sposób na przekierowanie do innego adresu URL z GetinititialProps w _error.js w NextJS?

Już próbowałem res.redirect ('/'); wewnątrz GetinitiTialProps.

Jego daje TypeError: res.Redirect nie jest funkcją

1
mudu 15 styczeń 2020, 10:01

2 odpowiedzi

Najlepsza odpowiedź

Chociaż ten przekierowanie z _error.js nie jest dla mnie odpowiednio, możesz spróbować czegoś takiego jak poniżej:

import Router from 'next/router'

// in your getInitialProps
if (res) { // server
  res.writeHead(302, {
    Location: '/'
  });

  res.end();
} else { // client
  Router.push('/');
}

Ponieważ getInitialProps może zostać wykonany na kliencie podczas nawigacji na inną trasę, należy również rozważyć dodanie etui inaczej.

Również sugerowałbym, abyś prześledził twoje podejście. _error.js służy do obsługi błędów 404 i 500 i nie należy potrzebować przekierowania na tym poziomie.


W przypadku importowania Błąd Komponent, getInitialProps _error.js nie zostanie uruchomiony.

5
Michalis Garganourakis 15 styczeń 2020, 07:50

Spróbuj tego?

YourPage.getInitialProps = async (ctx) => {
  ctx.res.writeHead(302, {
    Location: '/some_url',
    'Content-Type': 'text/html; charset=utf-8',
  });
  ctx.res.end();
     
  return {};
};
1
hydRAnger 30 listopad 2020, 14:48