Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Keep getting an error: listDevices.map is not a function

I have a Json file with information about various devices:

    {
  "devices": {
    "deviceList": [
      {
        "name": "iPhone X",
        "id": "193ywpe740",
        "deviceType": "Mobile",
        "os": "iOS",
        "brand": "Apple",
        "quantity": 3,
      },
      {
        "deviceType": "Tablet",
        "name": "Apple iPad (Wi-Fi, 32GB) - Gold",
        "brand": "Apple",
        "os": "MacOS",
        "id": "1563175150",
        "quantity": 5
      },
      {...}

My cardList js file:

import ReservationsListCard from "components/reservationsListCard";

const CardListSection = () => {
  const devices_url =
    "devices.json";

  const [listDevices, setListDevices] = useState([]);

  useEffect(() => {
    const fetchData = async () => {
      try {
        const devicesResponse = await fetch(devices_url);
        const devicesJson = await devicesResponse.json();
        const [listDevices] = devicesJson.devices.deviceList;


        setListDevices(listDevices);
      } catch (error) {
        //console.log("error", error);
      }
    };

    fetchData();
  }, []);

  return (
    <div className="device-list-section">
      {listDevices.map((device) => (
        <ReservationsListCard key={device.id} />
      ))}

      {console.log(listDevices)}
    </div>
  );
};

export default CardListSection;

What I am trying to achieve is to get the "id" of every device and pass it to my ReservationsListCard component which then takes that id and displays devices name, brand, image, etc. but I keep running in to the error in the title. What could I be doing wrong ? My theory is that I am not selecting the id’s of the devices. Or maybe it’s a problem with the component ReservationsListCard ?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

The error is in the line

const [listDevices] = devicesJson.devices.deviceList;

You’re trying to destructure (pull out the) first element of device list and assign it to list devices but you really just want to set listDevices to the device list. Try

const listDevices = devicesJson.devices.deviceList;

The error occurs because listDevices gets assigned to the first device in the list which is an object and has no map function

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading