์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Project
- ๋น๋๊ธฐ
- eport
- prj
- addEventListener
- ํผํ
- await
- promise
- db
- json
- setTimeout()
- ๋๊ธฐ
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- ๊ฒ์
- slow and steady
- Import
- ajax
- https://m.blog.naver.com/tt2t2am1118/221010125300
- webpack
- async
- callback
- database
- JS #ํ๋ก์ ํธ
- execCommand
- Porject
- sql
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- object
- mysql
- js
- Today
- Total
C-log
[FE]jsonํ์ผ๋ก๋ถํฐ ๊ฐ ๋ฌธ์ ์ด๋ฏธ์ง ๋์ฐ๊ธฐ(1) ๋ณธ๋ฌธ
[FE]jsonํ์ผ๋ก๋ถํฐ ๊ฐ ๋ฌธ์ ์ด๋ฏธ์ง ๋์ฐ๊ธฐ(1)
4:Bee 2024. 2. 29. 12:34ํ์ฌ ๋ฐฑ์๋๋ก ๋ถํฐ ์์ง ์๋ฒฝํ api๋ฅผ ์ ๋ฌ ๋ฐ์ง ์์๋ค. ๋ฐฑ์๋์์ ์์ง ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ๊ฒ์ด ์๋ฃ๋์ง ์์๋ค. ๋ฟ๋ง์๋๋ผ css๋ฅผ ์ ์ฉํ๊ธฐ ์ํด์ ๊ฐ ์ด๋ฏธ์ง๋ค์ className๋ api๋ก ์ ์ํ๊ธฐ๋ก ํ๋ค. ๊ทธ๋์ ์ง์ ์ํ๋ก ์ ์๋ jsonํ์ผ์ ์ง์ ์์ ํด๋ณด๋ คํ๋ค. ๋ ๋์๊ฐ์ ๊ธ์ ์ฌ์ด์ ์ด๋ฏธ์ง๊ฐ ์ฝ์ ๋๋ ๊ฒฝ์ฐ๋ ์๋ค. ์ด๋ฐ ๋ถ๋ถ๋ค์ ์ํ๋ก ์์ ํด ๋ณด๋ ค๊ณ ํ๋ค. ์ฐ์ ๋ด๊ฐ ์์ ํ jsonํ์ผ์ ์๋์ ๊ฐ๋ค.
์ฐ์ ๊ธ์ ์ฌ์ด์ ์ฝ์ ๋์ด ์๋ ์ด๋ฏธ์ง ํ๊ทธ๋ ์ด๋์ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๊ฐ๋์ง ํ๊ธฐํ๊ธฐ ์ํ '์ด๋ฏธ์ง ๋งํน'์ด๋ค. ์ด๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด์ jsonํ์ผ์ ๋ฆฌ์กํธ๋ก ๋ ๋๋ง ํด์ ํ๋ฒ์ ์ฒ๋ฆฌํ๋ฉด ์ข๊ฒ ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์๊ฐํ ๊ฒ์ฒ๋ผ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ง ๋ชปํ๋ค. ๊ทธ๋์ ์ด๋ฅผ ์ ๊ท ํํ์์ผ๋ก ์ง์ ํ์ฑํด์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ img ํ๊ทธ๋ก ์ ํํ๋ ค ํ๋ค. ๊ทธ๋ ๊ฒ ๋ง๋ค๊ฒ ๋ ํจ์๋ ์๋ ์ฝ๋์ ๊ฐ๋ค.
);
imgRegex๋ณ์์๋ jsonํ์ผ์ <img src = 1/>ํ๊ทธ๋ฅผ ์ฐพ์ ์ ์๋ ์ ๊ท ํํ์ '/<img\s+src=1\s*\/?>/g'์ธ ๋ฌธ์๋ฅผ ๋ฌธ์์ด๋ก ๊ธฐ์ ํด์ฃผ๊ณ ๋ณํ์ด ์ด๋ฃจ์ด์ง json์ question๋ฌธ์์ด์ ํ๋ผ๋งคํฐ๋ก ๊ฐ์ง๊ณ ์ replace๋ฅผ ํตํด์ imRegex์ ๋ด๊ฐ ์ํ๋ img ํ๊ทธ๋ก ์ ํ์ ํด์ค๋ค. ์ดํ ํด๋น ํจ์ ํ๋ผ๋งคํฐ์ ๊ฐ ํ์ํ ์ ๋ณด ๋ค์ ์ถ๊ฐ ํ ๊ฒ์ด๋ค. ์์ผ๋ก className์ด๋ image_url๋ค์ด ์์ ๊ฒ์ด๋ค. ์์๋ ์๋์ ๊ฐ๋ค.
'
์ด๋ฐ ์์ผ๋ก ์ ํ์ด ๋ ๊ฒ์ด๋ค. ์์ ์์๋ก ์ ํ์ด ๋ ๋ ๋ค์ ํฌ์คํ ์ ํด๋ณด๊ฒ ๋ค.
์ด์ parseImageTag๋ฅผ jsx์ ์ ์ฉํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
์ฌ๊ธฐ์ ๊ต์ฅํ ๋ฏ์ ๋ฌธ๋ฒ๋ค์ด ๋์ค๋๋ฐ 'dangerouslySetInnerHTML'์ ' __html:'์ด๋ค. ์๋ง๋ ํด๋น ๋ฌธ๋ฒ์ parseImageTage์ ์๋ ํ๊ทธ๊ฐ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด ์ ธ์๋ค. ๊ทธ๋์ ๊ฐ์ ๋ก ๋ฌธ์์ด์ html๋ก ์ ํํ๋ ๊ฒ์ด ์๋๊ฐ ์ถ๋ค. dangerouslySetInnerHTML์ ์ฐพ์๋ณด๋ React ๋ฌธ๋ฒ์ด๋ฉฐ, HTML์ ๋์ ์ผ๋ก ๋ ๋๋งํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค. ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ํฉ์ ์๋ฒ์์ ๊ฐ์ ธ์จ ํ ์คํธ ๋ฐ์ดํฐ์ HTML ํ๊ทธ๊ฐ ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ๊ทธ๋ ๋ค. ์ด ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ค๋ฅธ ๋ฌธ์ ์ฌํญ์ ์ผ๊ธฐ ํ ์ ์๋๋ฐ React์์๋ HTML ํ๊ทธ๋ฅผ ์ง์ ๋ ๋๋งํ ๊ฒฝ์ฐ ๋ณด์์์ ์ด์ ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฉํ์ง ์๋๋ค. ํ์ง๋ง dangerouslySetInnerHTML ์์ฑ์ ์ฌ์ฉํ๋ฉด React๊ฐ HTML์ ์์ ํ๊ฒ ๋ ๋๋งํ๋๋ก ํ์ฉํ ์ ์๋ค.
๋ฐ๋ผ์ ์ฃผ์ํด์ผ ํ ๊ฒ์ dangerouslySetInnerHTML์ ์ฌ์ฉํ ๋ ์ฌ์ ์ ์ ๋ขฐํ ์ ์๋ ์์ค์์ ๋ฐ์ HTML ์ฝ๋๋ฅผ ๋ ๋๋งํ ๋์๋ง ์ฌ์ฉํด์ผ ํ๋ค. ์ฌ์ฉ์ ์ ๋ ฅ์ด๋ ์ธ๋ถ์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์ด๋ฅผ ํตํด ๋ ๋๋งํ๋ ๊ฒ์ ๋ณด์์์ ์ํ์ด ์์ ์ ์๋ค. ์ฌ์ฉ ์์๋ ๊ผญ ์ทจ์ฝ์ ์ ๋ํ ๊ฒํ ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ง๊ณ ๋์ด๊ฐ์ผํ๋ ๊ฒ์ '์ด๋ฏธ์ง ๋งํน'์ ๋ ๋๋ง ํ๋ ๊ฒ์ด ์๋๋ผ๋ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ๋ ๋๋งํ HTML์ imRegex๋ผ๋ ๊ฒ์ด๋ค. ์ฆ, '์ด๋ฏธ์ง ๋งํน'์ด HTML๋ก ์ด๋ฃจ์ด์ ธ ์๋ ๋งํฌ๋ค์ด์ด๋ ์๋ฌด๋ฐ ์๊ด์ด ์๋ค๋ ๊ฒ์ด๋ค.
'๐ป๊ฐ๋ฐ ๋ ธํธ > ๋๋ง์ ์ํ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[FE]jsonํ์ผ๋ก๋ถํฐ ๊ฐ ๋ฌธ์ ์ด๋ฏธ์ง ๋์ฐ๊ธฐ(3) (0) | 2024.03.02 |
---|---|
[FE]jsonํ์ผ๋ก๋ถํฐ ๊ฐ ๋ฌธ์ ์ด๋ฏธ์ง ๋์ฐ๊ธฐ(2) (0) | 2024.03.02 |
[FE]๋ฌธ์ ๋๋ค ๊ตฌํ(2) (1) | 2024.02.27 |
[FE]๋ฌธ์ ๋๋ค ๊ตฌํ(1) (0) | 2024.02.27 |
[FE] MarkDown lib๋ฅผ ์ ์ฉํด ์ํ์ง ์ ๋ ฌ (0) | 2024.02.25 |