| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ | 
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 
| 26 | 27 | 28 | 29 | 30 | 31 | 
- execCommand
- json
- js
- await
- prj
- slow and steady
- ๊ฒ์
- Porject
- eport
- object
- promise
- setTimeout()
- https://m.blog.naver.com/tt2t2am1118/221010125300
- database
- ajax
- callback
- Project
- addEventListener
- ํผํ
- db
- JS #ํ๋ก์ ํธ
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- sql
- Import
- webpack
- ๋๊ธฐ
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- ๋น๋๊ธฐ
- async
- mysql
- Today
- Total
C-log
[FE]๋ฌธ์  ๋๋ค ๊ตฌํ(2) ๋ณธ๋ฌธ
์ง๋๋ฒ ํฌ์คํ ์์ ์ง์ ํ๋ ๋ฌธ์  ์ ํ ๊ด๋ จํด ๋ณด์ํ ๋ถ๋ถ์ ์ฝ๋๋ค์ ๋ฆฌ๋ทฐํ๋ ค๊ณ ํ๋ค. ๋จผ์  ๋ฌธ์ ๋ฅผ ๊ฐ์ ธ์ค๋ useEffect๋ถ๋ถ์ ๋ณด๋ฉด ์๋์ ๊ฐ๋ค.(branch/7)
์ด์  ์ฝ๋์ ๋ฌ๋ฆฌ data๋ฅผ ๋จผ์  slice๋ก ๊ฐ๊ณต์ ํด์ ์ํ๋ ๋ฌธ์  ๊ธธ์ด๋งํผ ์ ํ์ ๋๊ณ limitedData ๋ณ์์ ๋ด์๊ณ ํด๋น ๋ฐฐ์ด์ ๋ด์๋๊ณ shuffleArray ํจ์์ limitedData๋ฅผ ๋ฃ์ด์ ์ฐ๋ฆฌ๊ฐ ์ง์ ํ ๋ฌธ์ ๋ค๋ง ๋ฌธ์ ๋ฅผ ์์ด๋ผ ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค. ์ ์ฒด์ฝ๋๋ ์๋ ๋๋ณด๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์.
import React, { useState, useEffect } from "react";
import { Link } from "react-router-dom";
export default function LabExam() {
  const [data, setData] = useState([]);
  const [limit, setLimit] = useState(5);
  useEffect(() => {
    fetch('http://localhost:3001/sample')
      .then(res => res.json())
      .then((data) => {
        // ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ํ, ์ ํ๋ ๊ฐ์๋งํผ ์๋ฅด๊ณ  ์์
        const limitedData = data.slice(0, limit);
        const shuffledData = shuffleArray(limitedData);
        setData(shuffledData);
      })
      .catch((error) => {
        console.error("Error fetching data:", error);
      });
  }, [limit]);
  // Fisher-Yates ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๋๋คํ๊ฒ ์๋ ํจ์
  function shuffleArray(array) {
    for (let i = array.length - 1; i > 0; i--) {
      const j = Math.floor(Math.random() * (i + 1));
      [array[i], array[j]] = [array[j], array[i]];
    }
    return array;
  }
  return (
    <div>
      <h2>Test</h2>
      <select onChange={(e) => { setLimit(parseInt(e.target.value)); }}>
        <option value={5}>5</option>
        <option value={10}>10</option>
        <option value={15}>15</option>
        <option value={20}>20</option>
      </select>
      <Link to="/">back</Link>
      <ol>
        {data.map((item) => (
          <li key={item.id}><p>{item.question}</p>{item.options}</li>
        ))}
      </ol>
    </div>
  );
}์ด์  ๋ฌธ์ ๋ฅผ ์ ํํด์ ๋๋ค์ผ๋ก ์๋ ๊ฒ์ ๊ฐ๋ฅ ํด์ก๋ค. ํ์ง๋ง ์์ง ๋ฒํผ์ ๊ตฌํํ์ง ๋ชปํ๋ค. ๋จผ์  ๋ฒํผ ํ๊ทธ๋ฅผ ์์ฑํ๊ณ ๋ฒํผ ํ๊ทธ์์ ๋ฌธ์ ๊ฐ ๋๋ค์ผ๋ก ์์ด๋ ํธ๋ค๋ง ํจ์๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. ์ด์  suffleArrayํจ์๋ฅผ useEffect์์ ๋ฒ์ด๋ ์ ์๊ฒ ๋์๋ค. suffleArrayํจ์๋ฅผ ์ ๊ฑฐํ useEffect์ ํธ๋ค๋ง ํจ์๋ ์๋์ ๊ฐ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด์  ์ฐ๋ฆฌ๋ useEffect์ ์๋ shuffleArrayํจ์๋ฅผ ์ ๊ฑฐํ๊ณ ์ํ๋ ๋ฌธ์  ๊ฐ์๋ง ์ถ์ถํ ์ ์๊ฒ๋ง ํ๋ฉด ๋๋ค. ์ ์ฒด ์ฝ๋๋ ์๋ ๋๋ณด๊ธฐ๋ฅผ ์ฐธ๊ณ ํ๋ผ.
์ด๋ ๊ฒ ์ ํ๋ ๋ฌธ์ ์์์ ๋ฌธ์ ๋ฅผ ์์ด๋ด๋ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
'๐ป๊ฐ๋ฐ ๋ ธํธ > ๋๋ง์ ์ํ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [FE]jsonํ์ผ๋ก๋ถํฐ ๊ฐ ๋ฌธ์  ์ด๋ฏธ์ง ๋์ฐ๊ธฐ(2) (0) | 2024.03.02 | 
|---|---|
| [FE]jsonํ์ผ๋ก๋ถํฐ ๊ฐ ๋ฌธ์  ์ด๋ฏธ์ง ๋์ฐ๊ธฐ(1) (0) | 2024.02.29 | 
| [FE]๋ฌธ์  ๋๋ค ๊ตฌํ(1) (0) | 2024.02.27 | 
| [FE] MarkDown lib๋ฅผ ์ ์ฉํด ์ํ์ง ์ ๋ ฌ (0) | 2024.02.25 | 
| [FE] json-server๋ฅผ ํตํด ์์ API๋ฅผ ๊ฐ์ง๊ณ ๋ฌธ์ ๋ค์ ์ถ๋ ฅํ๋ค. (0) | 2024.02.06 | 
 
								 
								 
								