Gatsby-Starter-Lumen スターターを使い、 Gatsby でブログを作成している者です。

ブログに、記事をカテゴリーごとに分類して表示する「カテゴリーリスト」のメニューを作成したいと考えています。

下記のサイトを参考にカテゴリーリストを作成中なのですが、うまくいきません。

https://capsule-man.netlify.com/posts/add-category-list

記事の該当部分を引用いたします。

カテゴリ名がkeyで記事数がvalueである連想配列であるcategoriesは、あらかじめ親コンポーネントであるSidebarの処理の中で作っておき、それを子のCategoriesInSidebarにpropsとして受け渡している。

Sidebar内では次のようにしてcategoriesを作成する。

// lodash使う
import uniq from 'lodash/uniq'

// もっと良いやり方あるか
let categories = {};
const categories_list  = 
this.props.data.allCategoryNames.edges.map((edge) => {
   return (edge.node.frontmatter.category)
})
uniq(categories_list).forEach(category => {
  categories[category] = categories_list.filter(item => item ===     category).length;
});

// categories ==> {Javascript: 2, Docker: 1, Python: 1}

// 以下のように受け渡す
<CategoriesInSidebar data={categories}/>

具体的には、このコードを、どの部分に書き込めばよいのかが分からない状態です。
親コンポーネント Sidebar 内にある index.jsx 内を編集するべきだと思うのですが、
適切に編集できず、動作しません。

どのような編集がよいか、どなたかお示し頂けないでしょうか?
Sidebar 内にある index.jsx の内容をお示し致します。
宜しくお願いたします。

import React from 'react';
import get from 'lodash/get';
import Link from 'gatsby-link';
import Menu from '../Menu';
import Links from '../Links';
import profilePic from '../../pages/photo.jpg';
import './style.scss';

class Sidebar extends React.Component {
  render() {
    const { location } = this.props;
    const { author, subtitle, copyright, menu } = this.props.siteMetadata;
    const isHomePage = get(location, 'pathname', '/') === '/';

    /* eslint-disable jsx-a11y/img-redundant-alt */
    const authorBlock = (
      <div>
        <Link to="/">
          <img
            src={profilePic}
            className="sidebar__author-photo"
            width="75"
            height="75"
            alt={author.name}
          />
        </Link>
        { isHomePage ? (
          <h1 className="sidebar__author-title">
            <Link className="sidebar__author-title-link" to="/">    {author.name}</Link>
          </h1>
        ) :
          <h2 className="sidebar__author-title">
            <Link className="sidebar__author-title-link" to="/">    {author.name}</Link>
          </h2>
        }
        <p className="sidebar__author-subtitle">{subtitle}</p>
      </div>
    );
    /* eslint-enable jsx-a11y/img-redundant-alt */

    return (
      <div className="sidebar">
        <div className="sidebar__inner">
          <div className="sidebar__author">
            {authorBlock}
          </div>
          <div>

            <Menu data={menu} />
            <Links data={author} />
            <p className="sidebar__copyright">
              {copyright}
            </p>
          </div>
        </div>
      </div>
    );
  }
}

export default Sidebar;

export const conponentQuery = graphql`
  fragment sidebarFragment on siteMetadata_2{
    title
    subtitle
    copyright
    menu {
      label
      path
    }
    author {
      name
      email
      twitter
      facebook
    }
  }
`;