Desarrollé una aplicación de blog en nextjs, al agregar un nuevo blog en la base de datos, no representa la página con una nueva ruta, sino que tengo que ejecutar manualmente npm run build para generar previamente un nuevo blog. Hasta entonces sigue mostrando el error no encontrado.
export async function getStaticPaths() { const posts = await service.getAllPosts(); const paths = posts.map((post) => ({ params: { slug: post.slug }, })); return { paths, fallback: 'blocking' }; } export async function getStaticProps({ params, }: GetStaticPropsContext<{ slug: string }>) { const slug = params?.slug as string; try { const { post } = await service.getPost(slug); return { props: { post }, revalidate: 10, }; } catch (error) { return { props: { post: {}, error: error.message} }; } } const Blog = ({ post }: Props) => { return <div> <p>{post.title} </div>}
No estoy seguro de lo que estoy haciendo mal aquí.
Cuando agrego una nueva publicación de blog, no aparece en el lado del cliente cuando visito: https://example.com/blog/new-slug
Esto sucede porque está utilizando getStaticProps , que solo se llama cuando se crea el sitio web. Es útil para páginas que no cambian muy a menudo.
Si desea que el sitio web se actualice cada vez que publique algo, debe usar getServerSideProps que se llama cada vez que visita la página.
Alternativamente, también podría buscar en el lado del cliente, si no le importa el SEO.
Otra forma, si desea mantener el rendimiento de una página estática, es usar la opción de revalidación en getStaticProps . Le dice a la página que se reconstruya después de un intervalo de tiempo.