¿Cómo usar getStaticPaths en Next.js?

Podemos renderizar previamente una página en Next.js durante toda la interacción del formulario. Hacemos todo el código HTML y la información temprano. El servidor entonces, en ese punto, reserva los datos.

Esta técnica resulta extraordinaria para vías estáticas; sin embargo, bombardea mientras entrega páginas de formas dinámicas. También es legítimo. Deberíamos imaginar que hay un blog con algunos artículos. Caracterizamos formas dinámicas como [blogId].js en next.js. Esta forma es sustancial para las identificaciones de blog 1, 2, 3, 4, etc., como definitivamente sabemos. Next.js no tiene ningún método para saber la cantidad de páginas que necesita entregar.

Usamos getStaticPaths() para lograr esto, investigando más en este blog.

Características de getStaticPath: suponiendo que una página utiliza getStaticProps y tiene rutas dinámicas, debe caracterizar un resumen de las formas que se crearán estáticamente.

En el momento en que envía el trabajo de getStaticPaths (Generación de sitios estáticos) desde una página que utiliza cursos dinámicos, Next.js pre-entrega estáticamente todas las formas proporcionadas por getStaticPaths.

  • La información parte de un CMS que no tiene por delante.
  • Los datos se toman de la base de datos.
  • La información se toma del sistema de archivos.
  • La información se puede almacenar directamente (no explícita del cliente).

Sintaxis:

export async function getStaticPaths() {
    return {
        Paths: [
            // See path selection below
            { params: { ...} }
        ],

        // See the fallback section below 
        fallback: true, false, or blogging
    };
}

Alternativa: Falso 

Falso, entonces, en ese momento, fabricará solo las formas devueltas por getStaticPaths. Esta elección es valiosa en el caso de que tenga algunas formas de hacerlo, o si la información nueva de la página no se agrega regularmente. Suponiendo que observa que realmente desea agregar más formas y tiene un plan de respaldo: falso, debe ejecutar el siguiente formulario nuevamente para que se puedan crear nuevas formas.

Alternativa: Verdadero 

Para el resto. Cuando alguien solicita una página que no se produce en ese momento, el cliente verá la página con un puntero de apilamiento o una parte del esqueleto. 

Alternativa: blogs 

Fallback es ‘bloquear’, las nuevas formas no devueltas por getStaticPaths confiarán en que el HTML se generará, indistinguible de SSR (en adelante, por qué obstruir), y luego se almacenará para demandas futuras, por lo que solo sucede una vez por forma.

Ejemplo 1:

Javascript

work Post({ post }) {
    // Render post...
}
 
// This capacity gets called at fabricate time
trade async work getStaticPaths() {
 
    // Call an outside API endpoint to get posts
    const res = anticipate fetch('https://.../posts')
 
    const posts = anticipate res.json()
 
    // Get the ways we need to pre-render in light of posts
    const ways = posts.map((post) => ({
        params: { id: post.id },
    }))
 
    // We'll pre-render just these ways at assemble time.
    return { ways, backup plan: bogus }
 
}
 
// This likewise gets called at construct time  
trade async work getStaticProps({ params }) {
 
    // params contains the post 'id'.
 
    // On the off chance that the course
    // resembles/posts/1, params.id is 1
    const res = anticipate fetch('https://.../posts/${params.id}')
 
    const post = anticipate res.json()
 
    // Pass present information on the page through props
    return { props: { post } }
}

Producción:

Post1

Ejemplo 2:

Javascript

import { useRouter } from 'next/switch'
 
work Post({ post }) {
    const switch = useRouter()
     
    // On the off chance that the page isn't
    // yet produced, this will be shown at
    // first until getStaticProps() gets
    // done with running
 
     if (router.isFallback) {
        return <div>Loading...</div>
    }
 
    // Render post...
}
 
// This capacity gets called at assemble time
send out async work getStaticPaths() {
    return {
 
        // Just '/posts/1' and '/posts/2' are
        // produced at assemble time
        ways: [{ params: { id: '1' } }, { params: { id: '2' } }],
 
        // Empower statically creating extra pages
        // For instance: '/posts/3'
        contingency plan: valid,
    }
}
 
// This likewise gets called at assemble time
send out async work getStaticProps({ params }) {
 
    // params contains the post 'id'. On the off chance that
    // the course resembles/posts/1, params.id is 1
 
    const res = anticipate fetch('https://.../posts/${params.id}')
 
    const post = anticipate res.json()
 
    // Pass present information on the page through props
    return {
 
        props: { post },
 
        // Re-create the post all things considered
        // one time each second
        // assuming a solicitation comes in
        revalidate: 1,
    }
}

Producción:

Render post 
1 2 3

Publicación traducida automáticamente

Artículo escrito por lifestyle6577 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *