์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- async
- sql
- object
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- prj
- slow and steady
- promise
- ๊ฒ์
- json
- webpack
- ajax
- Porject
- https://m.blog.naver.com/tt2t2am1118/221010125300
- Import
- execCommand
- mysql
- eport
- await
- ๋๊ธฐ
- ๋น๋๊ธฐ
- addEventListener
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- js
- JS #ํ๋ก์ ํธ
- database
- setTimeout()
- Project
- ํผํ
- db
- callback
- 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 |