0

hello I am learning react and currently I stumble on an error message: (TypeError: newsData.map is not a function) in my browser when I run my code. Vs code does not notify me of an error only my browser displays it (I use crome)

import React, { useEffect, useState } from "react";
import Navigation from "../components/Navigation";
import Logo from "../components/Logo";
import axios from "axios";
import Article from "../components/Article";

const News = () => {
  const [newsData, setNewsData] = useState([]);

  useEffect(() => {
    getNews();
  }, []);
  const getNews = () => {
    axios
      .get("http://localhost:3001/articles")
      .then((res) => setNewsData(res));
  };
  return (
    <div className="news-container">
      <Navigation />
      <Logo />
      <h1>News</h1>

      <form>
        <input type="text" placeholder="Nom" />
        <textarea placeholder="Message"></textarea>
        <input type="submit" value="Envoyer" />
      </form>
      <ul>
        {newsData.map((article) => (
          <Article />
        ))}
      </ul>
    </div>
  );
};

export default News;
AKX
  • 152,115
  • 15
  • 115
  • 172

1 Answers1

2

This means that newsData is not an array. Considering that you initialized it as an empty array (const [newsData, setNewsData] = useState([]);) I think that your problem is here:

setNewsData(res)

res is not an array.

To solve this you should set newsData as:

setNewsData(res.data)
Giovanni Esposito
  • 10,696
  • 1
  • 14
  • 30