์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๊ฒ์
- json
- database
- JS #ํ๋ก์ ํธ
- setTimeout()
- promise
- js
- await
- addEventListener
- eport
- Import
- ํผํ
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- prj
- execCommand
- async
- slow and steady
- sql
- Porject
- webpack
- object
- ๋น๋๊ธฐ
- Project
- ๋๊ธฐ
- mysql
- db
- callback
- ajax
- https://m.blog.naver.com/tt2t2am1118/221010125300
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- Today
- Total
๋ชฉ๋ก๐ป๊ฐ๋ฐ ๋ ธํธ (21)
C-log
json-server api๋ฅผ ๋ด๋นํ๊ณ ์๋ useEffect๋ฅผ ์ปค์คํ ํ ์ผ๋ก ๋ง๋ค์ด ๊ด๋ฆฌํ๊ธฐ ์ํด์ ๋ถ๋ฆฌํ๋ ๋์ค์ ๋ฐ์ํ ์๋ฌ์ด๋ค. Too many re-render ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ๋ํ์ ์ผ๋ก uesEffect์ ์์กด์ฑ ๋ฐฐ์ด์ ์ฝ์ ํ์ง ์์์ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ค. ํ์ง๋ง ๋์ ๊ฒฝ์ฐ ์ปค์คํ ํ ์๋ useEffect์ ์์กด์ฑ ๋ฐฐ์ด์ด ๋ฌธ์ ์์ด ์ ์ฝ์ ๋์ด ์๋ค. ๊ทธ๋ ๋ค๋ฉด ํ์ฌ ์ปค์คํ ํ ์ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ปค์คํ ํ ์ ๋ถ๋ฌ์ค๋ ์ปดํฌ๋ํธ(LabExam)์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋จํ๋ค. ์๋ ์ฝ๋๋ ๋์ ์ปค์คํ ํ ์ด๋ค. * useLabExamAxios.js import { useState, useEffect } from "react"; import axios from 'axios'; export default ..
์ต๊ทผ ์ฆ์ ํ์์ ๋ณ๋๋๋ api์ ์ฝ๋๋ค์ด ๋ง์ ์์ฃผ push ํ์ง ๋ชปํ๋ค. commit๋ง ๋ค์ด ๋ฌ๊ณ ๊นํ๋ธ ์๋๋ ํ ํ ๋น์ด ์์ด์ ์์ฌ์์ด ์กฐ๊ธ์ ๋ง์ด ๋จ๋๋ค. api์ ํํ๊ฐ ๋ฐ๋์๋ค. ๊ธฐ์กด์ ํจ์์์ ์ด๋ฏธ์ง๋ฅผ ํ์ฑํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค. ๊ทธ ์ด์ ๋ api์ ๊ตฌ์กฐ๊ฐ ๋ฐ๋์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐ์ ๊ธฐ์กด ํจ์์ ๋ณ๊ฒฝ๋ ํจ์์ ์ฐจ์ด๋ฅผ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค. ๊ธฐ์กด outside image๋ฅผ ๋ ๋๋งํ๋ ํจ์๋ ๋ค์๊ณผ ๊ฐ๋ค. ๋จ์ํ ์ด๋ฏธ์ง์ image๊ฐ ๋ฐฐ์ด์ผ ๋ ํด๋น api๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ด๋ค. (์๋ ๋๋ณด๊ธฐ๋ก ์ด์ api์ ํํ๋ฅผ ํ์ธํด ๋ณด๋ฉด์ ๋น๊ตํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.) ๋๋ณด๊ธฐ "images": [ "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistoryFblo..
*์ด ๊ธ์ ํ์๋ฅผ ํ ๋๋ก ์์ฑ๋ ๊ธ์ด๋ค. ์ฐธ๊ณ ๋ก ์ฌ๊ธฐ์ ์์ฑ๋ url๋ค์ ๋ชจ๋ ์กด์ฌํ์ง ์๋ url์์ ๋ฏธ๋ฆฌ ์๋ฆฐ๋ค. API์ ๋ค์ด๊ฐ์ผํ ์ ๋ณด๋ค์ FE์์ ์์ ํ๊ธฐ๋ก ํ๋ค. API๊ฐ ๋ณ๊ฒฝ ๋ ๋ ๋ง๋ค ํฌ์คํ ์ ๋ฐ๋ก ํ์ง ์์์ง๋ง ์ฆ์ API๊ฐ ๋ณ๊ฒฝ๋์๋ค๋ ์ ์ ๊ณ ๋ คํด์ ์์ผ๋ก FE๊ฐ ์ด๋ป๊ฒ ๊ฐ๋ฐ์ ํด์ผํ๋์ง ๋ฐฉํ์ฑ์ ๋์ง์ด ๋ณด๋ ค๊ณ ํ๋ค. ๊ธฐ์กด์ ์๋ API์๋ ์ผ๋ฐ images๊ฐ urls์ ๋ณด๋ฅผ ์ ๊ณตํ ๋ ์ผ๋ฐ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ ธ ์์๋ค. ํ์ง๋ง ์ฌ๋ฌ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๊ฐ ์ ์๋ค๋ ์ ์ ๊ณ ๋ คํด์ ๋ฐฐ์ด๋ก ์ด๋ฃจ์ด์ง๋ก ํ๋ค. "images": [ "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog..png", "https:/..
์์ ํฌ์คํ ์์ dangerouslySetInnerHTML์ ์ฌ์ฉํ์ ๋ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ๋ค์ ํฌ์คํ ํ์๋ค. ๋ค์ ์๊ธฐ๊ฐ ํ์ํ๋ค๋ฉด ์๋ ๋งํฌ๋ฅผ ํตํด์ ๋ง์ง๋ง ํ๋จ ๋ถ๋ถ์ ์ฝ์ด ๋ณด๊ธธ ๋ฐ๋๋ค. [FE]jsonํ์ผ๋ก๋ถํฐ ๊ฐ ๋ฌธ์ ์ด๋ฏธ์ง ๋์ฐ๊ธฐ(1) ํ์ฌ ๋ฐฑ์๋๋ก ๋ถํฐ ์์ง ์๋ฒฝํ api๋ฅผ ์ ๋ฌ ๋ฐ์ง ์์๋ค. ๋ฐฑ์๋์์ ์์ง ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ๊ฒ์ด ์๋ฃ๋์ง ์์๋ค. ๋ฟ๋ง์๋๋ผ css๋ฅผ ์ ์ฉํ๊ธฐ ์ํด์ ๊ฐ ์ด๋ฏธ์ง๋ค์ className๋ api๋ก ์ ์ํ hi-code.tistory.com dangerouslySetInnerHTML์ ์ฌ์ฉํ์ง ์๊ณ html์ ์ด๋ป๊ฒ ๋๋๋ง ํ ์ ์๋์ง ๊ณ ๋ฏผํ๋ค ์ฐพ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ html-react-parser์ด๋ค. parseImageTagํจ์๋ ๋ณํจ์ด ์๋ค. ๋ณํ๊ฐ ๋..
์ด๋ฒ ํฌ์คํ ์์ ์์ ๋งํ๋ ์ด๋ฏธ์ง๊ฐ ์ฌ๋ฌ๊ฐ ์์ ๊ธฐ์ค์ผ๋ก ์ฝ๋๋ฅผ ๊ตฌํ์ ํด๋ณด๋ ค๊ณ ํ๋ค. ๋ณ๊ฒฝ๋ jsonํ์ผ์ ์๋์ ๊ฐ๋ค. { "sample": [ { "id": "1", "image": "https://png.pngtree.com/thumb_back/fh260/background/20230609/pngtree-three-puppies-with-their-mouths-open-are-posing-for-a-photo-image_2902292.jpg", "question": "๋ค์ ์ค ์ด์ค๋ 1.5ํค ํผ๊ฒฌ์ธ ์น์ฉ์๋์ฐจ๋ฅผ 4.5ํค ํ๋ฌผ์๋์ฐจ๋ก ๊ฒฌ์ธํ๋ ๊ฒฝ์ฐ ํ์ํ ์ด์ ๋ฉดํ์ ํด๋นํ์ง ์์ ๊ฒ์?", "options": [ "โ ์ 1์ข ๋ํ๋ฉดํ ๋ฐ ์ํ๊ฒฌ์ธ์ฐจ๋ฉดํ", "โก ์ 1์ข ๋ณดํต๋ฉดํ ๋ฐ ๋ํ๊ฒฌ์ธ์ฐจ๋ฉดํ",..
์ ํฌ์คํ ์์ ์ง์ ์ํ๋ก ์ ์๋ jsonํ์ผ์ ์ง์ ์์ ํด๋ณด์๋ค. ์ด๋ฒ์๋ ์ด๋ฏธ์งํ์ผ์ jsonํ์ผ๋ก ๋ฃ์ด ๋๊ณ ํด๋น ํ์ผ์ ๋ถ๋ฌ์ฌ ๊ฒ์ด๋ค. ๋ด๊ฐ ์์ ํ jsonํ์ผ์ ์๋์ ๊ฐ๋ค. { "sample": [ { "id": "1", "image": "https://png.pngtree.com/thumb_back/fh260/background/20230609/pngtree-three-puppies-with-their-mouths-open-are-posing-for-a-photo-image_2902292.jpg", "question": "๋ค์ ์ค ์ด์ค๋ 1.5ํค ํผ๊ฒฌ์ธ ์น์ฉ์๋์ฐจ๋ฅผ 4.5ํค ํ๋ฌผ์๋์ฐจ๋ก ๊ฒฌ์ธํ๋ ๊ฒฝ์ฐ ํ์ํ ์ด์ ๋ฉดํ์ ํด๋นํ์ง ์์ \n๊ฒ์?", "options": [ "โ ์ 1์ข ๋ํ๋ฉดํ..
ํ์ฌ ๋ฐฑ์๋๋ก ๋ถํฐ ์์ง ์๋ฒฝํ api๋ฅผ ์ ๋ฌ ๋ฐ์ง ์์๋ค. ๋ฐฑ์๋์์ ์์ง ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ๊ฒ์ด ์๋ฃ๋์ง ์์๋ค. ๋ฟ๋ง์๋๋ผ css๋ฅผ ์ ์ฉํ๊ธฐ ์ํด์ ๊ฐ ์ด๋ฏธ์ง๋ค์ className๋ api๋ก ์ ์ํ๊ธฐ๋ก ํ๋ค. ๊ทธ๋์ ์ง์ ์ํ๋ก ์ ์๋ jsonํ์ผ์ ์ง์ ์์ ํด๋ณด๋ คํ๋ค. ๋ ๋์๊ฐ์ ๊ธ์ ์ฌ์ด์ ์ด๋ฏธ์ง๊ฐ ์ฝ์ ๋๋ ๊ฒฝ์ฐ๋ ์๋ค. ์ด๋ฐ ๋ถ๋ถ๋ค์ ์ํ๋ก ์์ ํด ๋ณด๋ ค๊ณ ํ๋ค. ์ฐ์ ๋ด๊ฐ ์์ ํ jsonํ์ผ์ ์๋์ ๊ฐ๋ค. { "sample": [ { "id": "1", "question": "๋ค์ ์ค ์ด์ค๋ 1.5ํค ํผ๊ฒฌ์ธ ์น์ฉ์๋์ฐจ๋ฅผ 4.5ํค ํ๋ฌผ์๋์ฐจ๋ก ๊ฒฌ์ธํ๋ ๊ฒฝ์ฐ ํ์ํ ์ด์ ๋ฉดํ์ ํด๋นํ์ง ์์ \n๊ฒ์?", "options": [ "โ ์ 1์ข ๋ํ๋ฉดํ ๋ฐ ์ํ๊ฒฌ์ธ์ฐจ๋ฉดํ", "โก ์ 1์ข ๋ณดํต๋ฉด..