Como criar rotas dinâmicas no Next.js

Como criar rotas dinâmicas no Next.js

As rotas dinâmicas são páginas que permitem usar parâmetros personalizados em uma URL. Eles são especialmente benéficos ao criar páginas para conteúdo dinâmico.





Para um blog, você pode usar uma rota dinâmica para criar URLs com base nos títulos das postagens do blog. Essa abordagem é melhor do que criar um componente de página para cada postagem.





Você pode criar rotas dinâmicas em Next.js definindo duas funções: getStaticProps e getStaticPaths.





MAKEUSEO VÍDEO DO DIA

Como criar uma rota dinâmica no Next.js

Para criar uma rota dinâmica em Next.js, adicione colchetes a uma página. Por exemplo, [params].js, [slug].js ou [id].js.

Para um blog, você pode usar um slug para a rota dinâmica. Então, se um post tivesse a lesma dynamic-routes-nextjs , o URL resultante seria https://example.com/dynamic-routes-nextjs.



Na pasta pages, crie um novo arquivo chamado [slug].js e crie o componente Post que recebe os dados do post como prop.

apple watch série 6 alumínio vs aço inoxidável
const Post = ({ postData }) => { 
return <div>{/* content */}</div>;
};

Existem diferentes maneiras de passar os dados da postagem para a postagem. O método escolhido depende de como você deseja renderizar a página. Para buscar os dados durante o tempo de construção, use getStaticProps() e para buscá-los mediante solicitação, use getServerSideProps().





como desligar o microfone no windows 10

Usando getStaticProps para buscar dados de postagem

As postagens do blog não mudam com tanta frequência e buscá-las no momento da compilação é suficiente. Portanto, modifique o componente Post para incluir getStaticProps().

import { getSinglePost } from "../../utils/posts"; 

const Post = ({ content }) => {
return <div>{/* content */}</div>;
};

export const getStaticProps = async ({ params }) => {
const post = await getSinglePost(params.slug);
return {
props: { ...post },
};
};

A função getStaticProps gera os dados de postagem renderizados na página. Ele usa o slug dos caminhos gerados pela função getStaticPaths.





Usando getStaticPaths para buscar caminhos

A função getStaticPaths() retorna os caminhos para as páginas que devem ser pré-renderizadas. Altere o componente Post para incluí-lo:

export const getStaticPaths = async () => { 
const paths = getAllPosts().map(({ slug }) => ({ params: { slug } }));
return {
paths,
fallback: false,
};
};

Esta implementação de getStaticPaths busca todos os posts que devem ser renderizados e retorna os slugs como parâmetros.

Ao todo, [slug].js ficará assim:

import { getAllPosts, getSinglePost } from "../../utils/posts"; 

const Post = ({ content }) => {
return <div>{content}</div>;
};

export const getStaticPaths = async () => {
const paths = getAllPosts().map(({ slug }) => ({ params: { slug } }));
return {
paths,
fallback: false,
};
};

export const getStaticProps = async ({ params }) => {
const post = await getSinglePost(params.slug);

return {
props: { ...post },
};
};

export default Post;

Você deve usar getStaticProps() e getStaticPaths() juntos para criar uma rota dinâmica. A função getStaticPaths() deve gerar as rotas dinâmicas, enquanto getStaticProps() busca os dados renderizados em cada rota.

Como criar rotas dinâmicas aninhadas no Next.js

Para criar uma rota aninhada em Next.js, você precisa criar uma nova pasta dentro da pasta pages e salvar a rota dinâmica dentro dela.

Por exemplo, para criar /pages/posts/dynamic-routes-nextjs, salve [slug].js dentro /páginas/postagens.

Acessando parâmetros de URL de rotas dinâmicas

Depois de criar a rota, você pode recuperar o Parâmetro de URL da rota dinâmica usando o useRouter() Gancho de reação .

você pode transferir contatos do iphone para o Android?

Para o pages/[slug].js, pegue o slug assim:

import { useRouter } from 'next/router' 

const Post = () => {
const router = useRouter()
const { slug } = router.query
return <p>Post: {slug}</p>
}

export default Post

Isso exibirá o slug do post.

Roteamento dinâmico com getServerSideProps

Usando Next.js, você pode buscar dados em tempo de compilação e criar rotas dinâmicas. Você pode usar esse conhecimento para pré-renderizar páginas de uma lista de itens.

Se você deseja buscar dados em cada solicitação, use getServerSideProps em vez de getStaticProps. Observe que essa abordagem é mais lenta; você só deve usá-lo ao consumir dados que mudam regularmente.