<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: OtsoLap</title>
    <description>The latest articles on DEV Community by OtsoLap (@otsolap).</description>
    <link>https://dev.to/otsolap</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F624384%2F33a5369a-02da-479f-b23f-934b762ff678.jpeg</url>
      <title>DEV Community: OtsoLap</title>
      <link>https://dev.to/otsolap</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/otsolap"/>
    <language>en</language>
    <item>
      <title>Help creating a dynamic Navigation menu ( submenu included!) with StaticQuery</title>
      <dc:creator>OtsoLap</dc:creator>
      <pubDate>Sun, 02 May 2021 16:54:00 +0000</pubDate>
      <link>https://dev.to/otsolap/help-creating-a-dynamic-navigation-menu-submenu-included-with-staticquery-445a</link>
      <guid>https://dev.to/otsolap/help-creating-a-dynamic-navigation-menu-submenu-included-with-staticquery-445a</guid>
      <description>&lt;p&gt;Update: Solution here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/67492961/creating-a-dynamic-navigation-menu-submenu-included-with-staticquery"&gt;https://stackoverflow.com/questions/67492961/creating-a-dynamic-navigation-menu-submenu-included-with-staticquery&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hello, &lt;/p&gt;

&lt;p&gt;I'm trying to render dynamically my navigation menu. Unfortunately all I get is an empty field, even though I can get the correct data on my graphQL. this is my first time publicly requesting help. I hope this first post provides all the necessary information so that more talented developers can help me in my ask. :b&lt;/p&gt;

&lt;p&gt;My site is live on: &lt;a href="https://metsanotus.netlify.app/"&gt;https://metsanotus.netlify.app/&lt;/a&gt; and you can see that the ul that has {menuLinks} inside is empty.&lt;/p&gt;

&lt;p&gt;Here is what my graphQl structure is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;query menuItems {
        site {
          siteMetadata {
            MenuLinks {
              link
              title
              subMenu {
                link
                title
              }
            }
          }
        }
      }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And I do get the specific data that I want to retrieve.:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "data": {
    "site": {
      "siteMetadata": {
        "MenuLinks": [
          {
            "link": "/",
            "title": "Etusivu",
            "subMenu": null
          },
          {
            "link": "/metsan-otus",
            "title": "Minusta",
            "subMenu": null
          },
          {
            "link": "/vlogi",
            "title": "Vlogi",
            "subMenu": [
              {
                "link": "/vlogi/kirjakerho/",
                "title": "Kirjakerho"
              },
              {
                "link": "/vlogi/elamankoulu/",
                "title": "Elämänkoulu"
              },
              {
                "link": "/vlogi/saarnakirja/",
                "title": "Saarnakirja"
              },
              {
                "link": "/vlogi/hunajapurkki/",
                "title": "Hunajapurkki"
              },
              {
                "link": "/vlogi/pelihalli/",
                "title": "Pelihalli"
              },
              {
                "link": "/vlogi/karhuteatteri/",
                "title": "Karhuteatteri"
              }
            ]
          },
          {
            "link": "/yhteydenotto",
            "title": "Ota yhteyttä",
            "subMenu": null
          }
        ]
      }
    }
  },
  "extensions": {}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;^^ This data is set up on my gatsby-config.js  inside my siteMetaData object under MenuLinks object.&lt;/p&gt;

&lt;p&gt;These are my two attempts at trying to map my menu:&lt;br&gt;
&lt;a href="https://gist.github.com/otsolap/9bf186db6793bdcf721d520a45336e09"&gt;https://gist.github.com/otsolap/9bf186db6793bdcf721d520a45336e09&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gist.github.com/otsolap/e9935bf4de44c17ab3f91e352229db81"&gt;https://gist.github.com/otsolap/e9935bf4de44c17ab3f91e352229db81&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the code from the first gist, just to show an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`import React from "react"
import { graphql, StaticQuery, Link } from "gatsby"
import Nav from "react-bootstrap/Nav"
import Navbar from "react-bootstrap/Navbar"
import NavDropdown from "react-bootstrap/NavDropdown"

function menuLinks() {
  return (
    &amp;lt;StaticQuery
      query={graphql`
      query menuItems {
        site {
          siteMetadata {
            MenuLinks {
              link
              title
              subMenu {
                link
                title
              }
            }
          }
        }
      }
      `}
      render={data =&amp;gt; (
        &amp;lt;ul&amp;gt;
          {data.site.siteMetadata.MenuLinks.map((path) =&amp;gt; (
            &amp;lt;Nav.Link as="li" key={path.title}&amp;gt;
              &amp;lt;Link
                to={path.link}
              &amp;gt;
                {path.title}
              &amp;lt;/Link&amp;gt;
              {path.subMenu &amp;amp;&amp;amp; path.subMenu.length &amp;gt; 0 ? (
                &amp;lt;NavDropdown class="sub-items responsive-navbar-nav"&amp;gt;
                  {path.subMenu.map((subpath) =&amp;gt; (
                    &amp;lt;NavDropdown.Item a href={subpath.link}&amp;gt;
                      {subpath.title}
                    &amp;lt;/NavDropdown.Item&amp;gt;
                  ))}
                &amp;lt;/NavDropdown&amp;gt;
              ) : null}
            &amp;lt;/Nav.Link&amp;gt;))
          }&amp;lt;/ul&amp;gt;
      )}
    /&amp;gt;
  )
}


class Navigation extends React.Component {
  render() {
    return (
      &amp;lt;Navbar collapseOnSelect expand="md" className="site-navigation"&amp;gt;
        &amp;lt;Navbar.Brand class="logo" href="/"&amp;gt;Metsän Otus&amp;lt;/Navbar.Brand&amp;gt;
        &amp;lt;Navbar.Toggle aria-controls="responsive-navbar-nav" /&amp;gt;
        &amp;lt;Navbar.Collapse id="responsive-navbar-nav"&amp;gt;
          &amp;lt;ul&amp;gt;
            {menuLinks}
          &amp;lt;/ul&amp;gt;
        &amp;lt;/Navbar.Collapse&amp;gt;
      &amp;lt;/Navbar &amp;gt;
    )
  }
}


export default Navigation`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I think i'm very close to getting this done correct but am missing a small piece of crucial code.... Could some kind chap help a junior dev out? :b&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>graphql</category>
    </item>
  </channel>
</rss>
