Mejorando la Página de Publicación

Agregando title a la Página de Publicación

En pages/posts/[id].js, agreguemos la etiqueta title usando los datos de la publicación. Necesitarás agregar una importación para next/head al inicio del archivo y añadir la etiqueta title actualizando el componente Post:

// Agrega esta importación
import Head from 'next/head';
 
export default function Post({ postData }) {
  return (
    <Layout>
      {/* Agrega esta etiqueta <Head> */}
      <Head>
        <title>{postData.title}</title>
      </Head>
 
      {/* Mantén el código existente aquí */}
    </Layout>
  );
}

Formateando la Fecha

Para formatear la fecha, usaremos la librería date-fns. Primero, instálala:

npm install date-fns

Luego, crea un archivo llamado components/date.js y agrega el siguiente componente Date:

import { parseISO, format } from 'date-fns';
 
export default function Date({ dateString }) {
  const date = parseISO(dateString);
  return <time dateTime={dateString}>{format(date, 'LLLL d, yyyy')}</time>;
}

Nota: Puedes ver las diferentes opciones de cadenas para format() en el sitio web de date-fns.

Ahora, abre pages/posts/[id].js, agrega una importación para el componente Date al inicio del archivo y úsalo en lugar de {postData.date}:

// Agrega esta importación
import Date from '../../components/date';
 
export default function Post({ postData }) {
  return (
    <Layout>
      {/* Mantén el código existente aquí */}
 
      {/* Reemplaza {postData.date} con esto */}
      <Date dateString={postData.date} />
 
      {/* Mantén el código existente aquí */}
    </Layout>
  );
}

Si accedes a http://localhost:3000/posts/pre-rendering, ahora deberías ver la fecha escrita como "January 1, 2020".

Agregando CSS

Finalmente, agreguemos algo de CSS usando el archivo styles/utils.module.css que añadimos antes. Abre pages/posts/[id].js, luego agrega una importación para el archivo CSS y reemplaza el componente Post con el siguiente código:

// Agrega esta importación al inicio del archivo
import utilStyles from '../../styles/utils.module.css';
 
export default function Post({ postData }) {
  return (
    <Layout>
      <Head>
        <title>{postData.title}</title>
      </Head>
      <article>
        <h1 className={utilStyles.headingXl}>{postData.title}</h1>
        <div className={utilStyles.lightText}>
          <Date dateString={postData.date} />
        </div>
        <div dangerouslySetInnerHTML={{ __html: postData.contentHtml }} />
      </article>
    </Layout>
  );
}

Si accedes a http://localhost:3000/posts/pre-rendering, la página ahora debería verse un poco mejor:

Ejemplo

¡Buen trabajo! A continuación, mejoraremos la página de índice y ¡habremos terminado!

On this page