I created a Link with markdown on our POW!-website

My Sunday Skill Builder Session:

This Sunday, I created a Link with markdown on our POW!-website.

What did I do?

I created a Link with markdown.

Why did I do it?

I want to use markdown as my Content Management System (CMS) because it's my favorite CMS and Queen Raae told me to use markdown.

How did I do it?

I started out on my L.O.V.E. acronym.

L. Link and path and label
O. Open up in GraphiQL
V. Variable
E. Evol is love backward, no just kidding. I will do «E. Empty» on this Sunday's Skill Builder Session.

L.

Link and path and label

// POW!-website / pages / {MarkdownRemark.fields__slug}.js
<Link to={}>{}</Link>

// POW!-website / content / index / index.md

---
....
    cta:
      path: /signup
      label: Yes to privacy
---
....

O.

Open up in GraphiQL

// POW!-website / pages / {MarkdownRemark.fields__slug}.js
export const query = graphql`
  query ($id: String) {
    markdownRemark(id: { eq: $id }) {
      frontmatter {
        sections {
          cta {
            path
            label
          }
        }
      }
    }
  }
`;

V.

First I make the variable:

// POW!-website / pages / {MarkdownRemark.fields__slug}.js
const { path, label } = section.cta;

Then I use the variable:

<Link to={path}>{label}</Link>
// POW!-website / pages / {MarkdownRemark.fields__slug}.js
import React from "react";
import { graphql, Link } from "gatsby";

const ComponentName = ({ data }) => {
  const { frontmatter, html } = data.markdownRemark;
  const { title, sections } = frontmatter;

  return (
    <>
      <div className="container">
        <h1>{title}</h1>
        <div dangerouslySetInnerHTML={{ __html: html }} />
        {(sections || []).map((section) => {
          const { title } = section;
          const { html } = section.body.childMarkdownRemark || {};
          const { path, label } = section.cta || {};
          return (
            <section>
              <h2>{title}</h2>
              {html && <div dangerouslySetInnerHTML={{ __html: html }} />}
              {path && <Link to={path}>{label}</Link>}
            </section>
          );
        })}
      </div>
    </>
  );
};

export const query = graphql`
  query ($id: String) {
    markdownRemark(id: { eq: $id }) {
      html
      frontmatter {
        title
        sections {
          cta {
            path
            label
          }
          title
          body {
            childMarkdownRemark {
              html
            }
          }
        }
      }
    }
  }
`;

export default ComponentName;

 
For the long version, watch Sunday's OlaCast on YouTube.

 
💪😺👍
Keep your skill-builder-ship afloat this week!
⛵🔧🏴‍☠️

Ola Vea
Cap'n of his own skill-builder-ship

Interested in more daily treasures like this one?
Sent directly to your inbox?