์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- promise
- ๋๊ธฐ
- Porject
- ํผํ
- prj
- json
- addEventListener
- async
- db
- ๊ฒ์
- Project
- Import
- eport
- https://m.blog.naver.com/tt2t2am1118/221010125300
- callback
- slow and steady
- execCommand
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- sql
- await
- database
- ajax
- js
- mysql
- JS #ํ๋ก์ ํธ
- object
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- setTimeout()
- webpack
- ๋น๋๊ธฐ
- Today
- Total
C-log
์์ ๋ API๋ก ๊ธฐ์กด ํจ์ ์์ ๋ณธ๋ฌธ
์ต๊ทผ ์ฆ์ ํ์์ ๋ณ๋๋๋ api์ ์ฝ๋๋ค์ด ๋ง์ ์์ฃผ push ํ์ง ๋ชปํ๋ค. commit๋ง ๋ค์ด ๋ฌ๊ณ ๊นํ๋ธ ์๋๋ ํ ํ ๋น์ด ์์ด์ ์์ฌ์์ด ์กฐ๊ธ์ ๋ง์ด ๋จ๋๋ค.
api์ ํํ๊ฐ ๋ฐ๋์๋ค. ๊ธฐ์กด์ ํจ์์์ ์ด๋ฏธ์ง๋ฅผ ํ์ฑํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค. ๊ทธ ์ด์ ๋ api์ ๊ตฌ์กฐ๊ฐ ๋ฐ๋์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐ์ ๊ธฐ์กด ํจ์์ ๋ณ๊ฒฝ๋ ํจ์์ ์ฐจ์ด๋ฅผ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
๊ธฐ์กด outside image๋ฅผ ๋ ๋๋งํ๋ ํจ์๋ ๋ค์๊ณผ ๊ฐ๋ค. ๋จ์ํ ์ด๋ฏธ์ง์ image๊ฐ ๋ฐฐ์ด์ผ ๋ ํด๋น api๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ด๋ค. (์๋ ๋๋ณด๊ธฐ๋ก ์ด์ api์ ํํ๋ฅผ ํ์ธํด ๋ณด๋ฉด์ ๋น๊ตํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.)
์ฆ, ํ์ฌ๋ image ์์ url์ attribute ๊ทธ๋ฆฌ๊ณ class ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋ค. ์ ๊ทผ ๋ฐฉ๋ฒ์ ๋จ์ํ image๊ฐ ์๋ image.url๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ๊ทผ์ ํ๋ฉด ๋๋ ๊ฒ์ด๋ค. ์๋ ์ฝ๋๋ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ด๋ค. ์ฐธ๊ณ ๋ก image์ alt ๋ํ 1๋ถํฐ ์์์ด ์๋ 0๋ถํฐ ์์ํ๊ธฐ๋ก ์ฝ์ ํ๊ธฐ ๋๋ฌธ์ 1์ ๋ํ์ง ์๋๋ค.
๋ณ๊ฒฝ๋ api๋ฅผ ๋ณด๋ฉด ์ด๋ฏธ์ง ๊ฐ์ฒด๋ก ์ ๊ทผํด์ url์ ๊ฐ์ง๊ณ ์์ผํ๋ค. ๊ทธ๋์ image.url๋ก ์ ๊ทผํด์ ๋ณ๊ฒฝํ๋ฉด ๋๋ค. (์๋ ๋๋ณด๊ธฐ๋ก ๋ณ๊ฒฝ๋ api์ ํํ๋ฅผ ํ์ธํด ๋ณด๋ฉด์ ๋น๊ตํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.)
๋ค์์ผ๋ก ์์ ๋๋ ํจ์๋ inside image๋ฅผ ํ์ฑํ๊ณ ๋ ๋๋งํ๋ ํจ์์ด๋ค. ์ญ์๋ ์์ ํจ์์ ๊ฐ์ด api์ ์ด๋ฏธ์ง ๊ฐ์ฒด์ ์ ๊ทผํ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
์๋ ์ฝ๋๋ ๋ณ๊ฒฝ๋ ์ฝ๋์ด๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ฃผ์ ๊น๊ฒ ๋ด์ผํ ์ฝ๋๊ฐ ์๋ค. ๊ทธ๊ฒ์ RegExp์ด๋ค. ์ ๊ท ํํ์์ ๋ฌธ์์ด์์ ํน์ ๋ด์ฉ์ ์ฐพ๊ฑฐ๋ ๋์ฒด ๋๋ ๋ฐ์ทํ๋๋ฐ ์ฌ์ฉํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ RegExp๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น? ๋จ์ ๋ฆฌํฐ๋ด๋ก ํํํด์ ๋ฌธ์์ด ๋ฐฉ์์ผ๋ก ์์ฑํด๋ ๋๋๋ฐ ๋ง์ด๋ค. RegExp๋ ์์ฑ์์ด๋ฉฐ new๋ฅผ ํตํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๊ท ํํ์์ด ๋ฐํ์์ ์ปดํผ์ผ์ด ๋๋ค. ํจํด์ด ๋ณํ ๊ฐ๋ฅ์ฑ์ด ์๊ฑฐ๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ํด์ ์ง์์ ์ผ๋ก ์ ์ ์๋ ์ธ๋ถ ์์ค์์ ๊ฐ์ ธ์ค๋ ์ ๊ท ํํ์์ ๊ฒฝ์ฐ ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๊ทธ๋ ๋ค๋ฉด ์๋ฌธ์ด ๋ค ๊ฒ์ด๋ค. ๊ณผ์ฐ ์ฐ๋ฆฌ์ api์์ ํจํด์ด ๋์ ์ผ๋ก ๋ณํ๋ ๊ฒ์ธ์ง ๋ง์ด๋ค. ์ฐ์ ๋ฆฌํธ๋ฌ๋ก ์์ ์ฝ๋๋ฅผ ์์ฑ ํ์ ๋ ์ฝ๋๋ฅผ ์ดํด๋ณด์.
์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํด๋ ํฌ๊ฒ ๋ฌธ์ ๋ ์๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋์ ๊ธฐ์ค์ผ๋ก ๋ฆฌํฐ๋ด๊ณผ ์์ฑ์๋ฅผ ์ ํ๋ ๊ฒ์ด ๋ง๋ค ํ๋จ์ด ๋๋ค. ๊ทธ๋์ ๋ฆฌํฐ๋ด๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ์ข๋ค๊ณ ํ๋จ ๋๋ค.
* ์ฝ๋ ๋ถ์
(์ฝ๋ ๋ถ์์ ํตํด์ ๋ณ์๋ช ๊ณผ ํจ์๋ช ์ ์์ ํด ๋๊ฐ ๊ฒ์ด๋ค.)
# ParseImageTag
์ด ํจ์์ ๋ชฉ์ ์ ์ดํด๋ณด๋ฉด api์์ ๋ฌธ์ ๋ฅผ ๋ถ๋ฌ์ฌ ๋ ์ด๋ฏธ์ง ๋งํน์ผ๋ก ํ๊ธฐํด๋ HTML๋ฌธ๋ฒ์ ํ์ฑํ๋ ์ญํ ์ ํ๋ค. ์ด๋ฏธ์ง ๋งํน์ ํด๋ ํ๊ธฐ๋ '<img src=0>' ์์ 'src=n' ๋ถ๋ถ์ ํ์ฑํด์ ๊ฑฐ๊ธฐ์ ํด๋น ๋๋ api ์ด๋ฏธ์ง ๊ฐ์ฒด๋ฅผ ๋์ฒดํ๋ ํจ์์ด๋ค. ์ฆ, ์ฝ์ ๋์ด ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ ๋๋ง ํ ์ ์๋ ํจ์์ด๋ค.
๋งค๊ฐ๋ณ์ ๋ถํฐ ์ดํด๋ณด์. ์ฐ๋ฆฌ๋ ๋๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ ธ์์ผํ๋ค. ์ฒซ ๋ฒ์งธ๋ก๋ ํด๋น question ํ๋์ธ ๋ฌธ์ ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด๊ณ ๋ ๋ฒ์งธ๋ก๋ question_images_in ํ๋๋ฅผ ๊ฐ์ ธ์์ ์ด๋ฏธ์ง ํ๋๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ๊ฒ์ด๋ค. ์ฆ, id=n์ ํด๋น๋๋ question๊ณผ question_images_in๋ค์ ์์ฐจ์ ์ผ๋ก ๋ฐ๋ณตํ๋ค.
์ฌ๊ธฐ์ ๊ฐ ๋งค๊ฐ๋ณ์๊ฐ ์ด๋๋ก ์ด๋ป๊ฒ ํ๋ฌ๊ฐ๋์ง ์ดํ๋ณด์.
* let parsedQuestion = question;
์ฐ์ question์ paredQuestion์ผ๋ก ์ฌ์ ์๊ฐ ๋๋ค. ์๋ณธ์ ์ ์งํ๊ณ question์ด ๋ณต์ฌ๋ ๊ฐ์ผ๋ก replace๋ฅผ ํด์ ์ด๋ฏธ์ง๊ฐ ๋ ๋๋ง ๋ ์ ์๊ฒ ํ๊ธฐ์ํจ์ด๋ค.
* if (Array.isArray(questionImgUrls) && questionImgUrls.length > 0) {...}
ํด๋น ์กฐ๊ฑด ๋ฌธ์ questionImgUrls์ ๋ด๊ธด tiem.question_images_in ํ๋๊ฐ ๋ฐฐ์ด๋ก ์ด๋ฃจ์ด์ ธ ์๋์ง ์ ํจ์ฑ์ ํ์ธํ๋ ์กฐ๊ฑด ๋ฌธ์ด๋ค. ๋ง์ฝ ์ ํจํ์ง ์๋๋ค๋ฉด ๋ค๋ฅธ ์ด๋ฏธ์ง๋ก ๋์ฒด๊ฐ ๋ ์ ์๊ฒ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฌผ๋ก ํ์ฌ๋ else๋ฌธ์ผ๋ก return์ด ๋ ๋ null์ ์ถ๋ ฅํ๊ฒ ๋๋ค. ์ด ์กฐ๊ฑด๋ฌธ์ ์ ํจ์ฑ์ ํ์ธํ๋ ์ฐจ์์๋ ์์ง๋ง ์ฐ๋ฆฌ๊ฐ ๋ฐ์์ค๋ api์ ํ๋๊ฐ ๋ฌธ์ ๊ฐ ๋์๊ฑฐ๋ ์๊ธฐ์น ๋ชปํ ์ํฉ์ ๋๋นํ๊ธฐ ์ํด์ ํ์ํ ์กฐ๊ฑด ๋ฌธ์ด๋ค. (์์ธ์ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ ๋ถ๋ถ์์ FE์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ ์ง ๋ ผ์ ํ์ ์ถ๊ฐ์ ์ผ๋ก ํฌ์คํ ํ ์์ ์ด๋ค.)
* questionImgUrls.forEach((imageUrl, index) => {..} / const regex = /src=\d+/g; / parsedQuestion = parsedQuestion.replace(regex, `src="${imageUrl.url}"`); / return parse(parsedQuestion);
์ด์ ์ ํจ์ฑ์ด ํ์ธ๋ questionImgUrls ๋งค๊ฐ๋ณ์๋ forEach๋ฅผ ํตํด์ ํด๋น ์ด๋ฏธ์ง ๋ฐฐ์ด ์์ ์๋ ์์๋ค์ ์ฐจ๋ก๋๋ก ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ ์ ์ ํ ํ์ํ ์์น์ ์์๋๋ก ์์น์ํจ๋ค. map ํจ์๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋๋ฐ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ์ฌ์ฉ๋๊ธฐ์๋ ์ ์ ์น๊ฐ ์๋ค. ๋ฐ๋ผ์ ์ด๋ฏธ์ง์ ๊ฐ์ฒด๋ค์ ์์๋๋ก ๋ฐ๋ณตํ๋ ๊ฒ์ด ํด๋น ํจ์์ ๋ชฉ์ ์ด๊ธฐ ๋๋ฌธ์ forEach๋ฌธ์ด ์ ์ ํ ๊ฒ์ด๋ค. regex๋ณ์๋ ์ฐ๋ฆฌ๊ฐ ํด๋น question์ ๋ค์ด ์๋ ์ด๋ฏธ์ง ๋งํน ๋ถ๋ถ์ ์ ๊ท์์ผ๋ก ํ์ฑํ๋ ๋ณ์๋ฅผ ๋ด๊ณ ์๋ค. ํด๋น ์ด๋ฏธ์ง ๋งํน์ ์ฐพ์์ ์์ question์ด ๋ณต์ฌ๋ parsedQuestion ๋ณ์์ replace๋ฅผ ํตํด์ ์ด๋ฏธ์ง ํ๊ทธ์ url์ ์ ์ ํ ๋ฃ์ด ์ค๋ค. ์ดํ html-react-parser ๋ผ์ด๋ธ๋ฌ๋ฆด ์์ฉํด์ ํด๋น question ๊ฐ์ฒด๋ฅผ html๋ก ๋ ๋๋ง ๋๊ฒ return๋ฌธ์ผ๋ก ๋ฐํํด์ค๋ค.
## ๋ณ์๋ช ์์ ์ฌํญ
์ฐ๋ฆฌ๊ฐ ๋ณ์๋ช ์ ๊ณ ๋ฏผ์ ํด๋ด์ผ ํ๋ ์ด์ ๋ ์์ผ๋ก ํด๋น ํจ์๋ฅผ ์ธ๋ถ๋ก ์ปดํฌ๋ํธ๋ฅผ ๋๊ณ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ฒ ํ ๊ฒ์ด๋ค. ์ฆ, ํ์ฌ ๋งค๊ฐ๋ณ์๋ง ๋ณด์๋ question์ด๋ผ๋ ๊ฐ questionImgUrls์ ๊ฐ์ ๋ณ์๋ช ์ ํ์ฌ ์คํฌ๋ฆฝํธ ์ค์ฌ์ผ๋ก ๋ณด์์ ๋ ๊ด์ฐฎ์ ๋ณด์ด๋ ์ฌ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ๋๊ณ ๋ณด์์ ๋๋ ๊ณผ์ฐ ์ ์ ํ ๋ณ์๋ช ์ธ์ง ๊ณ ๋ฏผ์ ํ๊ฒ ๋๋ค. ์ฆ, ํด์ค๋ถ๋ถ์์๋ ํด๋น ํจ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ question์ด๋ผ๋ ๋งค๊ฐ๋ณ์๋ ๋๋ฌด ์ ํ์ ์๋ฏธ ์ค์ฌ์ ์ด๋ ์๊ฐ์ด ๋ ๋ค. ๊ทธ๋์ element๋ item๊ณผ ๊ฐ์ ๋จ์ด๋ก ํตํฉ์ ์ธ ์๋ฏธ๋ก ์๋ช ์ ํ ์ง ๊ณ ๋ฏผ ์ค์ด๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ค์ ํจ์ ๋งค๊ฐ๋ณ์๋ค์ ์ฐพ์์ ์ฐธ๊ณ ํด๋ฉด ์ข์ ๋ฏ ํ๋ค. ๋ ๋์๊ฐ ํจ์๋ช ๋ํ ์ฌ์ ์ ํ๋ฉด ์ข์ ๋ฏ ํ๋ค. imageUrl๊ฐ์ ๊ฒฝ์ฐ์๋ ํ์ฌ๋ ์ฐ๋ฆฌ๊ฐ imageUrl์์ url๋ง ์ ์ฉํ์ง๋ง ์ดํ์ class์ด๋ฆ์ ์ ๊ทผํ๋ attibute์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ ๊ทผํด์ผ ํ๋ค. ๊ทธ๋๋ฅผ ์๊ฐํด์ ๋งค๊ฐ ๋ณ์๋ฅผ ๋ณด๋ฉด imageUrl๊ฐ์ ๋ณ์๋ช ์ ๋ฒ์๊ฐ ๋๋ฌด ์ข๋ค๊ณ ๋ณธ๋ค. parseImageTag๋ผ๊ณ ์๋ช ํ๋ ๊ฒ๋ ์ข์ง๋ง ์๋ renderImage์ ๋์กฐ ํด๋ณด์์ ๋ ๋๋ฌด ๋๋จ์ด์ง ํจ์๊ฐ์ ๋ณด์ฌ ์์ ์ด ํ์ํด ๋ณด์ธ๋ค.
# renderImages
์ด ํจ์์ ๋ชฉ์ ์ ์ดํด๋ณด๋ฉด api์์ ์ธ๋ถ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ ๋๋ง ํ๋ ์ญํ ์ ํ๋ค. ์ธ๋ถ์ ์ด๋ฏธ์ง๋ฅผ imgํ๊ทธ๋ฅผ ํตํด์ ๋ ๋๋งํ๋ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ง ํจ์๋ผ์ ์ด์ ParserImageTag์ ๋ฌ๋ฆฌ ํน๋ณํ ํ์ฑ์ ํ์ง๋ ์๋๋ค. ์ฝ๋์ ํํ๋ ์ด์ ์ฝ๋์ ๋งค์ฐ ์ ์ฌํ๋ค.
* if (Array.isArray(questionImgUrls) && questionImgUrls.length > 0) {...}
์์ ํ์ธ ํ๋ ํจ์์ ๋ฐฐ์ด ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๋ ์กฐ๊ฑด๋ฌธ์ ๋์ผํ๋ฉฐ tiem.question_images_out ํ๋๊ฐ ๋ฐฐ์ด๋ก ์ด๋ฃจ์ด์ ธ ์๋์ง ํ์ธํ๋ ์กฐ๊ฑด ๋ฌธ์ด๋ค. ์์ ํจ์์ ๋์ผํ๊ฒ ๋ง์ฝ ์ ํจํ์ง ์๋๋ค๋ฉด else๋ฌธ์ผ๋ก return์ด ๋ ๋ null์ ์ถ๋ ฅํ๊ฒ ๋๋ค. (์์ธ์ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ ๋ถ๋ถ์์ FE์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ ์ง ๋ ผ์ ํ์ ์ถ๊ฐ์ ์ผ๋ก ํฌ์คํ ํ ์์ ์ด๋ค.)
* return imageData.map((image, imageIndex) => (...)
์ฌ๊ธฐ์๋ forEach๊ฐ ์๋๋ผ mapํจ์๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ธ์จ ๋ฐฐ์ด์ imgํ๊ทธ ์์๋ฅผ ์์ฑํด์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด ๋ด๋ ๊ฒ์ด๋ค. ์ฆ, ์ด์ ์ ์ฐ๋ฆฌ๊ฐ ์ดํด๋ณธ ParseImageTagํจ์๋ ๋ฐฐ์ด์ ์์๋ฅผ ๋จ์ํ ์์๋๋ก ๋์ดํ๊ณ replace ํ๋ ์ ๋์ด๊ธฐ ๋๋ฌธ์ forEach๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ค. ๋ฐ๋ผ์ renderImageํจ์์์๋ imgํ๊ทธ ์์๋ฅผ ์์ฑํ๊ณ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด๋ด๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์๋ mapํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ ํ๋ค.
## ๋ณ์๋ช ์์ ์ฌํญ
๋ณ์๋ช ์์ ํด์ผ ํ ๋ถ๋ถ์ imageData ๋งค๊ฐ๋ณ์์ด๋ค. image์ ๋ฐ๋ฅธ data๋ ๋ง์ง๋ง ํด๋น ๋งค๊ฐ๋ณ์๋ api์ ํ๋๋ช ์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ image๋ผ๊ณ ํน์ ์ง๋ ๊ฒ์ ์ฌํ์ฉ์ ํ๊ธฐ ์์ด์ ๋จ์ด์ ๋ฒ์๊ฐ ๋น์ข์ ๊ฐ์ด ์์ง ์์ ์๋ค. ๋ฐ๋ผ์ ์ด ๋ํ item์ด๋ element์ ๊ฐ์ ๊ด๋ฒ์ํ ๋จ์ด๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข์ ๊ฒ๊ฐ๋ค. ๋๋ filedName์ด๋ผ๊ณ ์์ฑํ๋ฉด ์ด๋จ๊น? renderImageํจ์๋ช ๋ํ ์์ ์ด ํ์ํด ๋ณด์ธ๋ค. image๊ฐ render๋๋ ๊ฒ์ ๋ง์ง๋ง parseImageTag์ ๋น๊ตํด ๋ณด๋ฉด ์กฐ๊ธ์ ์ด์ํด ๋ณด์ธ๋ค.
'๐ป๊ฐ๋ฐ ๋ ธํธ > ๋๋ง์ ์ํ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
react-quill lib์ด๋? react-quill์ ์ฌ์ฉํ์ง ๋ง์ (1) | 2024.03.15 |
---|---|
[FE][!ERRO]Too many re-renders. React limits the number of renders to prevent an infinite loop. (0) | 2024.03.13 |
์์ ๋ API์ ์์ผ๋ก FE์ ๊ฐ๋ฐ ๋ฐฉํฅ์ฑ (0) | 2024.03.06 |
[FE]image_test (0) | 2024.03.04 |
[FE]jsonํ์ผ๋ก๋ถํฐ ๊ฐ ๋ฌธ์ ์ด๋ฏธ์ง ๋์ฐ๊ธฐ(4)/html-react-parser (0) | 2024.03.03 |