1

I'm trying to display my nav items using map inside my Navbar component but it's not working. I got the error as: "Cannot read properties of undefined (reading 'map')". I don't know what is wrong. Please help me. Thank you so much!

Navbar.js:

import React from "react";
import navItems from "./NavItems";
import { Link } from "react-router-dom";

function Navbar() {
  return (
    <div>
      <ul>
        {navItems.map((item) => {
          return (
            <li key={item.id} className={item.cName}>
              <Link to={item.path}>{item.title}</Link>
            </li>
          );
        })}
      </ul>
    </div>
  );
}
export default Navbar;

NavItems.js:

export const navItems = [
  {
    id: 1,
    title: "Home",
    path: "./",
    cName: "nav-item"
  },
  {
    id: 2,
    title: "Services",
    path: "./services",
    cName: "nav-item"
  },
  {
    id: 3,
    title: "Products",
    path: "./products",
    cName: "nav-item"
  },
  {
    id: 4,
    title: "Contact Us",
    path: "./contactus",
    cName: "nav-item"
  }
];

Sanbox link: https://codesandbox.io/s/competent-agnesi-ho4h8?file=/src/components/NavItems.js:0-375

3 Answers 3

1

Its not default import, so use curly bracers for import import {navItems} from "./NavItems";

Sign up to request clarification or add additional context in comments.

Comments

0

There were two issues

You have not exported navItems as a default export. Need to change the import to following. In Navbar.js

import { navItems } from "./NavItems";

Need to wrap the App using BrowserRouter to get rid of the next error that comes in index.js.

import { BrowserRouter } from "react-router-dom";
...
...
ReactDOM.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>,
  rootElement
);

Code Sandbox

1 Comment

@na ha, check this out !!
0

In your App you had two problems:

Let's start by seeing your import :

Before

import navItems from "./NavItems";

After

import {navItems} from "./NavItems";

You use the brackets because you didn't export as being default.

Next Problem is that after your issue here you get and error regarding the route, here is a possible fix for you :

Before

import "./styles.css";
import Navbar from "./components/Navbar";

export default function App() {
  return (
    <div className="App">
      <Navbar />
    </div>
  );
}

After

import "./styles.css";
import Navbar from "./components/Navbar";
import { BrowserRouter as Router } from "react-router-dom";

export default function App() {
  return (
    <div className="App">
      <Router>
        <Navbar />
      </Router>
    </div>
  );
}

You have to do this changes in your App.js.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.