Logo

Publicado

- 3 min read

Criando Landing Pages com Next.js: Usando getStaticProps e getStaticPaths

img of Criando Landing Pages com Next.js: Usando getStaticProps e getStaticPaths

Introdução

Landing pages são páginas criadas com foco em conversão e visibilidade. Para garantir uma boa performance e indexação no Google, é fundamental que essas páginas sejam geradas estaticamente.

O Next.js oferece duas funções essenciais para isso: getStaticProps e getStaticPaths. Neste post, vamos entender como essas funções funcionam e como criar uma estrutura dinâmica de LPs que seja rápida e otimizada para SEO.


Pré-requisitos

Para acompanhar este post, você deve ter:

  • Conhecimentos básicos de React
  • Familiaridade com Next.js
  • Entendimento sobre rotas e props em componentes

O que são getStaticProps e getStaticPaths?

getStaticProps

Essa função permite buscar dados em tempo de build, gerando uma página estática com conteúdo dinâmico.

getStaticPaths

Usada em páginas dinâmicas, essa função informa ao Next.js quais rotas devem ser pré-renderizadas com getStaticProps.


Exemplo: Criando LPs Dinâmicas

Estrutura de arquivos

   pages/
└── lp/
    └── [slug].tsx

Código: pages/lp/[slug].tsx

   import { GetStaticProps, GetStaticPaths } from 'next'

type LPProps = {
	title: string
	content: string
}

export default function LandingPage({ title, content }: LPProps) {
	return (
		<div>
			<h1>{title}</h1>
			<p>{content}</p>
		</div>
	)
}

// Dados de exemplo
const lps = [
	{ slug: 'curso-react', title: 'Curso de React', content: 'Aprenda React do zero.' },
	{ slug: 'curso-nextjs', title: 'Curso de Next.js', content: 'Domine o framework Next.js!' }
]

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

export const getStaticProps: GetStaticProps = async (context) => {
	const { slug } = context.params as { slug: string }
	const lp = lps.find((p) => p.slug === slug)

	return {
		props: {
			title: lp?.title || '',
			content: lp?.content || ''
		}
	}
}

Resultado

Ao acessar /lp/curso-react ou /lp/curso-nextjs, o Next.js vai servir uma página gerada estaticamente com o conteúdo correspondente ao slug.

Essa abordagem traz:

  • Melhor SEO
  • Performance altíssima
  • Menor custo de hospedagem

Mini-projeto: Criando LPs a partir de um CMS fake

Imagine que seu conteúdo venha de uma API ou CMS. Basta adaptar as funções para buscar dados reais.

Exemplo com fetch

   export const getStaticPaths: GetStaticPaths = async () => {
	const res = await fetch('https://meu-cms.com/api/lps')
	const data = await res.json()

	const paths = data.map((lp: any) => ({ params: { slug: lp.slug } }))

	return { paths, fallback: false }
}

export const getStaticProps: GetStaticProps = async ({ params }) => {
	const res = await fetch(`https://meu-cms.com/api/lps/${params?.slug}`)
	const data = await res.json()

	return {
		props: {
			title: data.title,
			content: data.content
		}
	}
}

Próximos Passos

  • Usar fallback: true para gerar páginas sob demanda
  • Integrar com CMSs reais como Strapi, Sanity ou Headless WordPress
  • Gerar metadados dinâmicos para SEO avançado
  • Adicionar blocos visuais com componentes reutilizáveis

Materiais de Apoio


Agora você pode criar landing pages dinâmicas, rápidas e otimizadas para SEO com facilidade! 🚀