์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- mysql
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- database
- sql
- object
- execCommand
- promise
- addEventListener
- ๋๊ธฐ
- https://m.blog.naver.com/tt2t2am1118/221010125300
- ๊ฒ์
- json
- webpack
- js
- eport
- Project
- setTimeout()
- JS #ํ๋ก์ ํธ
- Porject
- ajax
- prj
- await
- ํผํ
- async
- db
- ๋น๋๊ธฐ
- Import
- callback
- slow and steady
- Today
- Total
C-log
react-quill lib์ด๋? react-quill์ ์ฌ์ฉํ์ง ๋ง์ ๋ณธ๋ฌธ
react-quill lib์ด๋? react-quill์ ์ฌ์ฉํ์ง ๋ง์
4:Bee 2024. 3. 15. 00:51์ด์ ๋๋ง์ ์ํ์ง๋ฅผ ์์ฑํ ์ ์๋ ํ์ด์ง๋ฅผ ์ ์ํ ๊ฒ์ด๋ค. ๋ชจ๋ ๊ธฐ๋ฅ์ ํด์ ์ผ์ผ์ด ์ ์ํ๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ ๋น ๋ฅด๊ฒ ์์ ์ ์ํํ๋ฉด ์ข๊ฒ๋ค๊ณ ํ๋จ์ ํ๋ค. FEํ์์ด ์์๋ด์ค ๊ฒฐ๊ณผ react-quill์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋ณด์ ์๋ฃ๊ฐ ๋ง๋ค๊ณ ์ถ์ฒ์ ํด์ฃผ์๋ค. ๊ทธ๋์ ์ด๋ฒ ์๊ฐ์๋ react-qull ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์๋ณด๋ ค๊ณ ํ๋ค. ์ฐ์ react-quill ๋ผ์ด๋ธ๋ฌ๋ฆด npm์ผ๋ก ์ค์นํ๊ณ ๊ธฐ๋ณธ์ ์ธ ์ธํ ์ ํด๋ณด๊ฒ ๋ค. ๊ธฐ๋ณธ์ ์ธ ์ธํ ์ ์๋์ ๊ฐ๋ค.
# setting react-quill
์์ ๊ฐ์ด ์์ฑํ๊ณ ๋ธ๋ผ์ฐ์ ๋ก ๋์๋ณด๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
# import Css
๋ธ๋ผ์ฐ์ ์์ ๋ ๋๋ง์ด ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ๋ฒํผ๋ค๊ณผ ์ด๋ฏธ์ง์ธ ๊ฒ ๊ฐ๋ค. ์ด๋ฏธ์ง๊ฐ ์ด๋ ๊ฒ ์ค๊ตฌ ๋๋ฐฉ์ผ๋ก ์ ๋ ฌ์ด ๋๋ ๊ฒ์ด ๋ง๋์ง ์ฐพ์๋ณด๋ css๋ฅผ ๊ผญ importํด์ผํ๋ค๋ ๊ฒ์ ์์๋ค. ์๋๋ css๋ฅผ ์ถ๊ฐํด ์์ ๋ ์ฝ๋์ด๋ค.
์ด์ quill ๋ผ์ด๋ธ๋ฌ๊ฐ ์ ๋๋ก import๋ ๊ฒ์ ํ์ธ ํ๊ณ ํด๋น ํธ์ง๊ธฐ์ ํด๋ค์ ๋ด๊ฐ ์ํ๋ ๊ฒ๋ค๋ง ์ปค์คํ ํ ์ ์๊ฒ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด๋ ค๊ณ ํ๋ค. ์๋ ์ฝ๋๋ ๋ด๊ฐ ์ํ๋ ํด๋ค์ ์ปค์คํ ํ ์ฝ๋์ด๋ค.
์ฐ์ ReactQuill ์ปดํฌ๋ํธ์ modules๋ผ๋ ํ๋กํผํฐ์๋ ํธ์ง๊ธฐ์์ ์ฌ์ฉํ ๋ค์ํ ๋ชจ๋์ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ ์ ์๋ค. ์ ์ฝ๋์์๋ modules ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ํ๋ ๊ธฐ๋ฅ์ ์ค์ ํ๋ค. ์ด๋ฅผ ํตํด ์ด๋ฏธ์ง ์ฝ์ , ํค๋ ์คํ์ผ ์ค์ , ๊ทธ๋ฆฌ๊ณ ๋ณผ๋์ฒด ๋ฐ ๋ฐ์ค๊ณผ ๊ฐ์ ํ ์คํธ ์คํ์ผ ์ง์ ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ํธ์ง๊ธฐ์ ์ถ๊ฐํ ์ ์๋ค. ์ฐ๋ฆฌ์๊ฒ ํ์ํ ๊ฑด ์ด๊ฒ์ ์๋ํฐ ์ํ์์ ์ฝ๊ธฐ ์ํ๋ก ๋ณํ ํ ์์๊ฒ ์ ์์ ํด์ผํ๋ค.
# useState๋ฅผ ์ฌ์ฉํด์ ๋ณํ๋ ๊ฐ๋ค์ ์ ์ฉํ๊ธฐ
useState๋ฅผ ์ฌ์ฉํด์ ๋ด๊ฐ ์ ๋ ฅํ ๊ฐ๋ค์ log๋ก ๋ฐ์ ๋ณด์. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ useState๋ฅผ ์ฌ์ฉํด์ ํด๋น input ํ๋กํผํฐ์ onChange๋ฅผ ๋ฃ์ด์ ๊ฐ์ ๋ฐ์ ์์ผํ๋ค. ๋จผ์ useState๋ฅผ ์์ฑํด๋ณด์. ์๋ ์ฝ๋๋ useState์ ํ์ํ input๊ณผ ๋ฒํผ๋ค๋ง ์ฝ์ ํ ์ฝ๋์ด๋ค.
๊ฐ ํ์ํ ํจ์๋ฅผ ์์ฑํด๋ณด์. ์๋ ์ฝ๋๋ ํ์ํ ํธ๋ค๋ง ํจ์๋ง ์์ฑํ ์ฝ๋์ด๋ค.
์์ ์ฝ๋๋ฅผ ์ด์ ์ ์ ํ ์์น์ onChange๋ฅผ ์ด์ฉํด์ jsx์ ๋์ ์ ํ๋ฉด ์๋์ ๊ฐ์.
์ ์๊ฐ์ด ์์ฑํ๋ฉด ์ฝ๋๊ฐ ์๋ฌ๊ฐ ๋๋๋ฐ ๊ตฌ์ฒด์ ์ธ ์๋ฌ์ ์ด์ ๋ ์๋ ๋๋ณด๊ธฐ๋ฅผ ์ฐธ๊ณ ํด๋ณด์.
์์ ๊ฐ์ ์๋ฌ๊ฐ ๋ ์ด์ ๋ react-quill์ปดํฌ๋ํธ ๋ด๋ถ์ onChange๊ฐ ์๋๋ฐ ์ด๋ ์ด๋ฒคํธ๋ก ์ฒ๋ฆฌ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๋ค. react-quill ์ ๋ด๋ถ์ ์ผ๋ก ๋ณต์กํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํฐ์ ๋ด์ฉ์ ๊ด๋ฆฌํ๊ณ , ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ก ์ ๋ฌ๋๋ ๊ฐ์ ๋ด๋ถ์ ๋ณต์กํ ๊ฐ์ฒด ๋ค.
## ๋ด๋ถ์ ๋ณต์กํ ๊ฐ์ฒด
react-quill์ quill ์๋ํฐ์ react ๋ํผ(wrapper)์ด๋ฉฐ, quill ์๋ํฐ๋ ๋ด๋ถ์ ์ผ๋ก ๋ณต์กํ ์ํ ๊ด๋ฆฌ ๋ฐ ๋ ๋๋ง์ ์ฒ๋ฆฌํ๋ค. ๋ฐ๋ผ์, react-quill์ onChange ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ํ์ค HTML ์ ๋ ฅ ์์์ ์ด๋ฒคํธ์๋ ๋ค๋ฅธ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋๋ค. ๊ทธ๋์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก๋ content: ์๋ํฐ์ ํ์ฌ ๋ด์ฉ์ ๋ํ๋ด๋ ๋ฌธ์์ด์ด๋ Delta ๊ฐ์ฒด์ด๋ค. Delta ๊ฐ์ฒด๋ quill์์ ๋ด์ฉ์ ๋ณ๊ฒฝ ์ฌํญ์ ํํํ๋ ๋ฐ ์ฌ์ฉํ๋ ํ์ค ํฌ๋งท์ด๋ค.
์ ์ฝ๋๋ฅผ ์์ ํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด๋๋ค.
์ ์ฒด ์ฝ๋๋ ์๋ ๋๋ณด๊ธฐ๋ฅผ ํ์ธํ๋ฉด ๋๋ค.
# ์ ๋ ฅ textArea ๋นํ์ฑํ ๊ทธ๋ฆฌ๊ณ quill ์์ฑ์์ useEffect
์ฐ๋ฆฌ๋ ํ์ฌ ์ ๋ ฅํ textArea ๋ถ๋ถ์ ๋นํ์ฑํ ํ๋ ค๊ณ ํ๋ค. ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํด์๋ ์ฐ์ reactQuill๊ณผ Quill์ ์ฐจ์ด๋ฅผ ์์์ผํ๋ค. Quill์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ค. ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
์์ ์ฝ๋๋ฅผ์ดํด๋ณด๋ฉด ๊ธฐ์กด react-quill์ ์ฌ์ฉํ์ง ์๊ณ quill์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ธํ ์ ํ๋ค. quill์ ์์ฑํ๊ธฐ ์ํด์๋ uesEffect๋ก quill์ ์์ฑ์๋ก ์์ฑํ๊ณ ์กฐ์์ ํด์ผํ๋ค. ์ผ๋ฐ์ ์ผ๋ก DOM ์์์ ๋ํ ์กฐ์์ react ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ํ์ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ณดํต useEffect ํ ์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์๋ฌธ์ ๊ฐ์ง ๊ฒ์ด๋ค. ์ DOM์ ์ด๋ ๊ฒ ์ฐ๋ฆฌ๊ฐ ์ง์ฐฉ์ ํ๋ฉด์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋๊ฐ ๋ง์ด๋ค. ์ฐ์ quill ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ js์ ํ๊ฒฝ์ ์ฌ์ฉํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ๊ฒ์ด๋ค. ์ฆ, ์ผ๋ฐ์ ์ผ๋ก js์์ DOM์ ์ ๊ทผํ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๊ฐ ์์ฑ ๋์๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ด ๋ง์ quill ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ react์ ํน์ง์ธ virtualDOM์ ๊ณ ๋ คํด์ ์ ์๋ ๊ฒ์ด ์๋๊ธฐ์ react-quill์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ ํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ค์ ๋ก react์์ DOM์ ์ ๊ทผ์ ํด์ผํ๋ ์ํฉ์ด ์๋คํ๋ฉด react์์ ๊ถ์ฅํ์ง ์๋๋ค.
useEffect ๋ด์์ quill ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋๊ณ ํด๋น DOM ์์๊ฐ ์์ฑ๋ ํ์ quill ์์ฑ์๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ํ ๊ฒ์ด๋ค. ์ด๊ธฐํ๋ฅผ ํ๋ ์ด์ ๋ ์์ ๋งํ์ง๋ง DOM์ ์ง์ ์ ์ผ๋ก ์ฝ์ ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค. quill๊ณผ ๊ฐ์ WYSIWYG ์๋ํฐ๋ DOM ์์์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ํ๋ค. ๋ฐ๋ผ์ DOM์์์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ์ด ๋์ด ์๊ธฐ ๋๋ฌธ์ ํด๋น ์์๊ฐ ์์ฑ๋ ํ์ quill์ ์ด๊ธฐํํด์ผ๋ง ์ ๋๋ก ์๋ํ๋ค. react์์๋ DOM ์์์ ์์ฑ ๋ฐ ์กฐ์์ ๊ด๋ฆฌํ๊ธฐ ์ํด virtualDOM์ ์ฌ์ฉํ๋ฉฐ, ์ปดํฌ๋ํธ์ ๋ ๋๋ง์ด ์๋ฃ๋ ํ์ ์ค์ DOM ์์๊ฐ ์์ฑ๋๋ค. ์ดํ์๋ useEffect๋ componentDidMount์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ DOM ์์์ ๋ํ ์ด๊ธฐํ ์์ ์ ์ํํ ์ ์๋ค. ์ด๊ธฐํ ์ด์ ์ DOM ์์๊ฐ ์์ผ๋ฉด quill์ด ์ฐ๊ฒฐ๋ ๋์์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ๋ฆฌ์กํธ ํ๊ฒฝ์ quill ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ผ์ ๋ง์ถฐ ๊ฐ๋ฐํ๋ ๊ฒ์ ํฐ ๋ฌด๋ฆฌ๊ฐ ์๋ค๋ ๊ฒ์ ์ ์์์๋ค.
์๋ ๋๋ณด๊ธฐ๋ฅผ ํตํด์ ์ธ๋ง์ดํธ์ ๋ง์ดํธ์ ๊ดํ ๊ธ์ ์ฐธ๊ณ ํ ์ ์๋ค.
## react์ ์ธ๋ง์ดํธ์ ๋ง์ดํธ
๋ง์ดํธ๋ React ์ปดํฌ๋ํธ๊ฐ DOM์ ์ฝ์
๋๋ ๊ณผ์ ์ ๊ฐ๋ฆฌํจ๋ค. ์ฆ ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๊ณ ๋ธ๋ผ์ฐ์ ์ ์ค์ DOM์ ์ถ๊ฐ๋๋ ์์ ์ด๋ค. React์์ ์ปดํฌ๋ํธ๊ฐ ์ฒ์์ผ๋ก DOM์ ์ฝ์
๋ ๋, ๋ค์๊ณผ ๊ฐ์ ์ผ๋ จ์ ๋จ๊ณ๊ฐ ๋ฐ์ํ๋ค.
1. constructor(): ์ปดํฌ๋ํธ์ ์์ฑ์ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค. ์ด ๋จ๊ณ์์๋ ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋ฉ์๋๋ฅผ ๋ฐ์ธ๋ฉํ๋ ๋ฑ์ ์์
์ ์ํํ๋ค.
2. static getDerivedStateFromProps(): ์ด ๋ฉ์๋๊ฐ ์๋ค๋ฉด props๋ก๋ถํฐ ์ํ๋ฅผ ๋์ถํ๊ฑฐ๋ ๋๊ธฐํํ๋ ์์
์ ์ํํ๋ค. ๊ทธ๋ฌ๋ ์ด ๋ฉ์๋๋ ํ์๋ ์๋๋๋ค.
3. render(): ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋๋ค. ์ด ๋ฉ์๋์์๋ React ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐํํ์ฌ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ค.
4. componentDidMount(): ์ปดํฌ๋ํธ๊ฐ DOM์ ์ฝ์
๋ ์งํ์ ํธ์ถ๋๋ค. ์ด ๋จ๊ณ์์๋ ์ด๊ธฐํ ์์
, ์ธ๋ถ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฑ์ ๋น๋๊ธฐ ์์
์ ์ํํ๋ค.
์ด ๋จ๊ณ๊ฐ ์๋ฃ๋๋ฉด React ์ปดํฌ๋ํธ๊ฐ ์ฑ๊ณต์ ์ผ๋ก DOM์ ๋ง์ดํธ๋์๋ค๊ณ ๋งํ๋ค. ์ปดํฌ๋ํธ์ ๋ง์ดํธ๊ฐ ์๋ฃ๋๋ฉด ์ดํ์๋ ์
๋ฐ์ดํธ๋ ์ธ๋ง์ดํธ์ ๊ด๋ จ๋ ์๋ช
์ฃผ๊ธฐ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
# React-Quill๊ณผ Quill์ ์ฐจ์ด
๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ์ผ๋ฐ quill์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ react-quill์ react ์ ํ๋ฆฌ์ผ์ด์ ์์ quill์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก react ์ปดํฌ๋ํธ๋ก ๋ํ๋ ๊ฒ์ด๋ค. react-quill์ quill ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ react ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ ์ฝ๊ฒ ํตํฉํ ์ ์๊ฒ ํด์ค๋ค๋ ์ฐจ์ด๊ฐ ์๋ค. ๋ฐ๋ผ์ react-quill์ react ์ปดํฌ๋ํธ๋ก ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ react ์ปดํฌ๋ํธ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค. ์ด๋ react ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ์ ์ํธ์์ฉํ๊ฑฐ๋ react์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค. ๋ฐ๋ฉด์ ์ผ๋ฐ quill์ react ์ปดํฌ๋ํธ๊ฐ ์๋๋ฏ๋ก react์์ ํตํฉ์ด ๋ ์ด๋ ต๋ค. ๊ทธ๋ ๋ค๊ณ react-quill์ด ์ฐ๋ฆฌ๊ฐ ์๊ฐํ๋ ๋งํผ ์กฐ์ํ๊ธฐ ์ฌ์ด ๊ฒ์ ์๋๋ค. ์์์๋ ์ธ๊ธํ ๋ฏ event์ฒ๋ฆฌ๊ฐ ์ฝ์ง ์๋ค๋ ๊ฒ์ ์ ์ ์์ผ๋ฉฐ ๋ด๋ถ์ ๋ณต์ก์ฑ์ด ์์ด์ ํ๋ํ๋ ํํด์น๊ณ ๋ถ๋ฆฌํด์ ์ฌ์ฉํ๊ธฐ ์ด๋ ต๋ค.
* ๋ํ์ด๋?
## ๋ํ์ด๋?
react ์ปดํฌ๋ํธ์์์ ๋ํ์ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ ์์๋ฅผ ๊ฐ์ธ์ ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
* Reference
### ์ด๋ฏธ์ง ํฌ๊ธฐ ์ค์ด๊ธฐ
# ๊ฒฐ๋ก
์ฐ๋ฆฌ๊ฐ ํ์ฌ ์งํํ๊ณ ์๋ ํ๋ก์ ํธ์ react-quill๊ณผ quill์ ์ฌ๋ฌ๋ฉด์์ ์ ํฉํ์ง ์๋ค. ๊ธฐ๋ณธ์ ์ธ ๊ฒ์ํ๊ณผ ๊ฐ์ ๋จ์ํ ํํ๋ผ๋ฉด ๊ฐ๋จํ๊ณ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ์ง๋ง ์ฌ๋ฌ ์ํฉ๊ณผ ์ํ์์ ๋์๊ตฌํ์ ์ธ๋ฐํ๊ฒ ํ๊ธฐ ์ํด์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ฌ๋ฌ ์ ํ์ ๋ฐ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถ ์ํค๋ ๊ฒ์ ์ฌ์ค์ด์ง๋ง ์ํฉ๊ณผ ํ ๊ฐ๋ฐ ๋ชฉ์ ์ ๋ฐ๋ผ ์๊ฐ์ ๋จ์ถ๊ณผ ์ง์ฐ์ ๋ฌ๋ผ์ง๋ค๋ ๊ฒ์ ์ฑ๊ฐํ๊ฒ ๋์๋ค. ์ฐ๋ฆฌ์ ๊ฐ๋ฐ ๋ชฉ์ ์ ์ข ๋ ์์จ์ฑ์ด ํ๋ณด๋๋ฉด์ ์ธ์ฌํ๊ฒ ์กฐ์๊ณผ ๋์์ด ๊ฐ๋ฅํด์ผํ๋ค. ํ์ฌ react-quill๊ณผ quill๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์กฐ์ฌํ๊ณ ์ฌ๋ฌ ์คํ๊ณผ ์ ์ฉํ๋๋ฐ ๋ค์ด๊ฐ ์๊ฐ์ด 4์ผ์ด๋ ๋์๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ์ง์ editor์ tool๋ค์ ๊ตฌํํ๋ ๊ฒ์ด ๋ ๋์ ์ ํ์ด๋ผ๋ ๊ฒ์ ์์๋ค. ์ ๋ฆฌ ํ์๋ฉด ์ฐ๋ฆฌ๊ฐ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์ด์ ๋ ๋ค์ ์๋์ ๊ฐ๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฝ
- react-quill์ onClick๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค. ์ด๋ ์ฆ, ์ฐ๋ฆฌ ๊ฐ๋ฐ์ ์์จ์ฑ์ ๋จ์ดํธ๋ฆฐ๋ค.
- quill์ ๋ฐ๋๋ผ js์ ์ ํฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. react์์ ๊ตฌ๋์ ํ ์ ์์ผ๋ quill์ DOM์ ์ง์ ์ ์ธ ์ฝ์ ๊ณผ์ ์ด ํ์ํด์ ๋ง์ดํธ๋ฅผ ๊ณ ๋ คํด useEffect๋ฅผ ํตํด ์ด๊ธฐํ๋ฅผ ํด์ค์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ์์ ์ผ๋ก ๋์์ ํ๋ค.
์ด๋ฌํ ์ด์ ๋ก editor์ tool์ ์ง์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ react-quill๊ณผ quill์ ์คํํด๋ดค๋ ๋ด์ฉ์ ๋ด๊ณ ์์ง๋ง ๋ด๊ฐ ์คํํ๋ ๋ชจ๋ ์ํ๊ณผ์ ๋ค์ ๋ด์ ๋ด์ง ๋ชปํ๋ค. ๋๋ฌด ๋ง์ ์ ๋ณด๋ค์ ๋ถํ์ํ๊ฒ ๋์ด ๋๊ธฐ ๋ณด๋ค. ๊ณผ์ ์ค ์ค์ํ๋ ๋ถ๋ถ๋ค๋ง ๋ฝ์ ์์ฑ์ ํ๋ค.