Доработка страницы поста

Добавление title на страницу поста

В файле pages/posts/[id].js добавим тег title, используя данные поста. Вам нужно добавить импорт next/head в начало файла и обновить компонент Post, добавив тег title:

// Добавьте этот импорт
import Head from 'next/head';
 
export default function Post({ postData }) {
  return (
    <Layout>
      {/* Добавьте этот тег <Head> */}
      <Head>
        <title>{postData.title}</title>
      </Head>
 
      {/* Оставьте существующий код здесь */}
    </Layout>
  );
}

Форматирование даты

Для форматирования даты мы будем использовать библиотеку date-fns. Сначала установите её:

npm install date-fns

Затем создайте файл components/date.js и добавьте следующий компонент 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>;
}

Примечание: Различные варианты строк для format() можно посмотреть на сайте date-fns.

Теперь откройте pages/posts/[id].js, добавьте импорт компонента Date в начало файла и замените {postData.date} на него:

// Добавьте этот импорт
import Date from '../../components/date';
 
export default function Post({ postData }) {
  return (
    <Layout>
      {/* Оставьте существующий код здесь */}
 
      {/* Замените {postData.date} на это */}
      <Date dateString={postData.date} />
 
      {/* Оставьте существующий код здесь */}
    </Layout>
  );
}

Если вы откроете http://localhost:3000/posts/pre-rendering, теперь дата должна отображаться в формате "1 января 2020".

Добавление CSS

Наконец, добавим немного CSS, используя ранее созданный файл styles/utils.module.css. Откройте pages/posts/[id].js, добавьте импорт CSS-файла и замените компонент Post следующим кодом:

// Добавьте этот импорт в начало файла
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>
  );
}

Если вы откроете http://localhost:3000/posts/pre-rendering, страница теперь должна выглядеть лучше:

Пример

Отличная работа! Далее мы доработаем главную страницу и завершим проект!