[ReactJS] ๋ฐฑ์—์„œ GET method๋ฅผ ํ†ตํ•ด ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹นํ•  ๋•Œ ๊ฐ’์ด ์ฝํ˜€์ง€์ง€ ์•Š๋Š” ๋ฌธ์ œ - Uncaught TypeError: Cannot read properties of undefined (reading '0')

2022. 12. 9. 12:35ยทโ—ผ FrontEnd/ReactJS
๋ฐ˜์‘ํ˜•

๐Ÿšจ ๋ฌธ์ œ ์ƒํ™ฉ

ํŒ€ ํ”„๋กœ์ ํŠธ ์ค‘ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜์—ฌ ๋ฐ›์€ ํ›„, ์ด ์ •๋ณด๋ฅผ ๊ฐ€๊ณตํ•ด์„œ ํ™”๋ฉด์— ๋ Œ๋”๋งํ•ด์ฃผ๋Š” ์ž‘์—…์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์žˆ์—ˆ๋‹ค. ์ด ๋•Œ ์ž์ฃผ ๊ณจ์น˜๋ฅผ ์•„ํ”„๊ฒŒ ํ–ˆ๋˜ ์—๋Ÿฌ๊ฐ€ ํ•˜๋‚˜ ์žˆ์–ด ํฌ์ŠคํŠธ๋กœ ๋‚จ๊ธด๋‹ค.

 

const ReservationPage = () => {
  const [lectureData, setLectureData] = useState({});

  // ๋ฐฑ์—์„œ ์ƒํ’ˆ ๋””ํ…Œ์ผ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
  useEffect(() => {
    fetch(`/data/reservationData.json`, {
      method: 'GET',
    })
      .then(response => response.json())
      .then(data => {
        setLectureData(data);
      });
  }, []);

  if (lectureData === {}) {
    return null;
  }

  ...
}

 

์šฐ์„ , fetch ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐฑ์—”๋“œ๋กœ๋ถ€ํ„ฐ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ์˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•˜๋‹ค.

 

{
  "data": [
    {
      "images": "aimage",
      "lectureDate": [
        {
          "isReserved": 0,
          "lectureDate": "2022, 12, 23",
          "lectureTimeOptionId": 1
        }
      ],
      "lectureId": 1,
      "lectureText": "์œ„์А๋žญ ์Šคํƒ€ ์…ฐํ”„ ๊น€ํ˜ธ์ค€์˜ ๋น„๋ฐ€ ๋ ˆ์‹œํ”ผ ํ›”์ณ์˜ค๊ธฐ",
      "lectureTitle": "์œ„์А๋žญ 3์Šคํƒ€ ์‰ํ”„ ๊น€ํ˜ธ์ค€์˜ ๋น„๋ฐ€ ๋ ˆ์‹œํ”ผ",
      "lecturerName": "Georgeta",
      "price": "70000"
    }
  ]
}

 

์ด ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์ด์šฉํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค.

 

  // ๋ฐฑ์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น
  const data = lectureData.data;
 
  const { lectureId, lectureTitle, lectureText, lecturerName, price, images } =
    data[0];

 

ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

Uncaught TypeError: Cannot read properties of undefined (reading '0')

undefined์ธ ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์—†๋‹ค. ์ฆ‰, ๋ฐฑ์—”๋“œ์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

 


๐Ÿ’ก ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ๊ณผ์ •

์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜, ๋ฐฑ์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹นํ•  ๋•Œ, ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฐฐ์—ด์˜ index ๊ฐ’์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด ๊ฐ’์ด ์ฝํ˜€์ง€์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๊ณ  ํ•œ๋‹ค.

const { lectureId, lectureTitle, lectureText, lecturerName, price, images } = data[0];

 

๋”ฐ๋ผ์„œ ๋ฐฑ์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์‹œ, ๋ฐฐ์—ด์˜ index๋กœ ์ ‘๊ทผํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐฑ์—์„œ ๋งŒ๋“  ๋ฐ์ดํ„ฐ์— ๋ฐฐ์—ด ๊ตฌ์กฐ๊ฐ€ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š” ์ƒํ™ฉ์€ ์ž์ฃผ ์žˆ๋‹ค. ์ด๋Ÿด ๋• ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”๊ฐ€?

 

๋งŒ์ผ ๋ฐ์ดํ„ฐ์— ๊ผญ index๋กœ ์ ‘๊ทผํ•ด์•ผ๋งŒ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด setState์˜ Modifier ํ•จ์ˆ˜ ์ธ์ž ๋‚ด๋ถ€์—์„œ (index๋กœ) ์ ‘๊ทผํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

const ReservationPage = () => {
    const [lectureData, setLectureData] = useState([]);
    const [reservation, setReservation] = useState('');
    const { lectureId } = useParams();

    // ๋ฐฑ์—์„œ ์ƒํ’ˆ ๋””ํ…Œ์ผ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
    useEffect(() => {
      fetch(`http://10.58.52.141:3000/lectures/${lectureId}/reservations`, {
        method: 'GET',
      })
        .then(response => response.json())
        .then(data => {
          // ์ด ๊ณณ์—์„œ ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ OK
          setLectureData(data.data[0]);
        });
    }, []);

    // ๋ฐฑ์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น
    const { lectureId, lectureTitle, lectureText, lecturerName, price, images } =
      lectureData;
      
    ...
  }

 


๐Ÿ’ฌ ๋А๋‚€ ์ 

๋…ผ๋ฆฌ์ ์ธ ์ ˆ์ฐจ๋Œ€๋กœ๋ผ๋ฉด ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ์—†์ด ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•  ํ…๋ฐ, ๊ทธ๋ ‡์ง€ ์•Š์•„์„œ ์ฐธ์œผ๋กœ ๋‹ต๋‹ตํ–ˆ๋˜ ์—๋Ÿฌ์˜€๋‹ค. ๋ฉ˜ํ† ๋‹˜๋„ ์ •ํ™•ํ•œ ์ด์œ ๋ฅผ ๋ชจ๋ฅด์…จ๊ณ  ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ด๋„ ์›ํ•˜๋Š” ๋‹ต์„ ์–ป์„ ์ˆ˜ ์—†์–ด์„œ ์ฐธ์œผ๋กœ ์•„์‰ฌ์› ๋‹ค.

 

๋ฐ˜์‘ํ˜•

'โ—ผ FrontEnd > ReactJS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ReactJS] React JS ์†Œ๊ฐœ ๋ฐ ์„ค์น˜  (0) 2023.01.22
[ReactJS] ๊ฐœ๋ฐœ ๋„์ค‘ ๋งˆ์ฃผํ–ˆ๋˜ ์˜ค๋ฅ˜ ๋ชจ์Œ (2022๋…„ 11-12์›”)  (0) 2023.01.20
[ReactJS] setState์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋กœ ์ธํ•œ ๋ฒ„๊ทธ ํ•ด๊ฒฐํ•˜๊ธฐ  (0) 2022.11.04
[ReactJS] React์—์„œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ , event ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์   (0) 2022.11.04
[ReactJS] React๋กœ ์š”์†Œ์— ํด๋ž˜์Šค ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐํ•˜๊ธฐ (๋ถ€์ œ : React์—์„œ ์ง์ ‘ DOM์„ ์กฐ์ž‘ํ•˜์ง€ ์•Š๋„๋ก ํ•˜์ž)  (0) 2022.11.04
'โ—ผ FrontEnd/ReactJS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ReactJS] React JS ์†Œ๊ฐœ ๋ฐ ์„ค์น˜
  • [ReactJS] ๊ฐœ๋ฐœ ๋„์ค‘ ๋งˆ์ฃผํ–ˆ๋˜ ์˜ค๋ฅ˜ ๋ชจ์Œ (2022๋…„ 11-12์›”)
  • [ReactJS] setState์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋กœ ์ธํ•œ ๋ฒ„๊ทธ ํ•ด๊ฒฐํ•˜๊ธฐ
  • [ReactJS] React์—์„œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ , event ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ 
SangYoonLee (SYL)
SangYoonLee (SYL)
Slow, But Steady Wins The Race ๐Ÿ˜Ž
    ๋ฐ˜์‘ํ˜•
  • SangYoonLee (SYL)
    โ—† Slow, But Steady โ—†
    SangYoonLee (SYL)
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • โ—ป ์ „์ฒด ๊ธ€ ์ˆ˜ : (132)
      • โœช ์ทจ๋ฏธ, ๊ฒฝํ—˜ ํšŒ๊ณ  ๋ฐ ์ผ์ƒ (26)
        • [์ทจ๋ฏธ] Room Escape (2)
        • [ํšŒ๊ณ ] IT ๊ด€๋ จ ๊ฒฝํ—˜ ํšŒ๊ณ  (18)
        • [์ผ์ƒ] ์ผ์ƒ ์ƒ๊ฐ (4)
        • [์ผ์ƒ] ๋…ํ›„๊ฐ (1)
      • โ—ผ FrontEnd (30)
        • Web & HTML, CSS (9)
        • JavaScript (4)
        • TypeScript (1)
        • ReactJS (16)
      • โ—ผ CS (3)
        • ์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜ (1)
        • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ (1)
        • ์šด์˜์ฒด์ œ (1)
      • โ—ผ PS Note (40)
        • ๋ฐฑ์ค€ (38)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (2)
      • โ—ผ IT Etc. (33)
        • (Until 2021) (21)
        • Python (6)
        • C | C# | C++ (1)
        • Git (1)
        • Unity (4)
        • Game Dev. (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ๐Ÿ’ป GitHub
    • ๐ŸŸข Velog
    • ๐Ÿงฉ ์˜จ๋ผ์ธ ๋ฐฉํƒˆ์ถœ ์ถœ์‹œ ์ž‘ํ’ˆ ๋ชจ์Œ
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์œ ๋‹ˆํ‹ฐ
    CodeSoom
    React
    ๋ฆฌ์—‘ํŠธ
    Cpp
    ๋ฏธ๊ถ ๊ฒŒ์ž„
    ํ›„๊ธฐ
    ๋”๋ผ๋น„๋ฆฐ์Šค
    1929
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ํŒŒ์ด์ฌ
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ์ฃผ๊ฐ„ ํšŒ๊ณ 
    ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ
    unity
    Python
    ๋ฐฑ์ค€
    ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ
    ์ฝ”๋“œ์ˆจ
    C++
    wecode
    ํšŒ๊ณ 
    ๋ฐฉํƒˆ์ถœ๊ณ ์‚ฌ
    ํ”„๋กœ์ ํŠธ
    ์œ„์ฝ”๋“œ
    ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ
    JavaScript
    ์ฝ”๋”ฉ ์ผ๊ธฐ
    Component
    pygame
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
SangYoonLee (SYL)
[ReactJS] ๋ฐฑ์—์„œ GET method๋ฅผ ํ†ตํ•ด ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹นํ•  ๋•Œ ๊ฐ’์ด ์ฝํ˜€์ง€์ง€ ์•Š๋Š” ๋ฌธ์ œ - Uncaught TypeError: Cannot read properties of undefined (reading '0')
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”