๐Ÿ’™ ssafy

[SSAFYcial] ์‹ ํ•œ ํ•ด์ปคํ†ค React Editor ์ ์šฉ๊ธฐ

c0zi 2024. 8. 28. 02:02

์•ˆ๋…•ํ•˜์„ธ์š” ! ์‹ธํ”ผ์…œ 11๊ธฐ ์ด์ง€ํ˜œ ๊ธฐ์ž์ž…๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ๊ธฐ์‚ฌ๋Š” React ํ”„๋กœ๊ทธ๋žจ์— Editor๋ฅผ ์ ์šฉํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด์„œ ๋‹ด์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

โ” Editor๋ฅผ ์™œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋๋‚˜์š” ?

์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒŒ๋„, ์ด๋ฒˆ์— ์‹ ํ•œ์€ํ–‰์—์„œ SSAFY ์žฌํ•™์ƒ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ์‹ ํ•œ ํ•ด์ปคํ†ค ์ฐธ์—ฌ์ž๋กœ ์„ ์ •๋˜์–ด ์ฐธ์—ฌํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

 

2024 ์‹ ํ•œ ํ•ด์ปคํ†ค

 

์ด๋ฒˆ ํ•ด์ปคํ†ค์—์„œ ์ €ํฌ ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์ œ์ƒ ๊ธ€ ์ž‘์„ฑ ์‹œ์— ๋‹ค์–‘ํ•œ ๋‚ด์šฉ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ–ˆ๊ณ , ์ด๋ฅผ ์ด์œ ๋กœ React์—์„œ ์œ„์ง€์œ… Editor๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’‍โ™€๏ธ ์–ด๋–ค Editor๋ฅผ ์ฑ„ํƒํ–ˆ๊ณ , ๊ทธ ์ด์œ ๊ฐ€ ๋ญ”๊ฐ€์š” ?

 

์šฐ์„ ์ ์œผ๋กœ ๋ง์”€๋“œ๋ฆฌ๋ฉด, ์ œ๊ฐ€ ์ฑ„ํƒํ•œ Editor๋Š” React Quill์ž…๋‹ˆ๋‹ค.

 

์—๋””ํ„ฐ ์„ ํƒ ์‹œ์— ์ œ๊ฐ€ ๊ณ ๋ คํ•œ ์ ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ๋ฉ€ํ‹ฐ ์ด๋ฏธ์ง€๋ฅผ ์ง€์›ํ•  ๊ฒƒ

2. react 18์„ ์ง€์›ํ•  ๊ฒƒ

 

์ด ๋‘๊ฐ€์ง€๊ฐ€ ํ•„์ˆ˜์ ์œผ๋กœ ์ง€์›๋˜๋ฉด์„œ, PWA ์•ฑ ํŠน์„ฑ์— ๋งž๊ฒŒ ๋ฌด๊ฒ์ง€ ์•Š์€ ๊ฐ€๋ฒผ์šด ์—๋””ํ„ฐ๋ฅผ ์ฐพ๊ณ ์ž ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ Editor ์„ ์ • ๊ณผ์ •

 

๊ฐ€์žฅ ์ฒ˜์Œ ๊ณ ๋ คํ•œ ์—๋””ํ„ฐ๋Š” CK Editor5์ž…๋‹ˆ๋‹ค.

CK Editor - Classic Editor

 

CK Editor5์˜ ๊ฒฝ์šฐ, ๊น”๋”ํ•˜๊ณ  ์ง๊ด€์ ์ธ UI๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง•์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์—์„œ ๋›ฐ์–ด๋‚œ UX๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ, CK Editor์˜ ์ ์šฉ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋˜ ์ค‘ ๋‹ค์ค‘ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ๋‚˜ ๊ณ ๊ธ‰ ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•  ์‹œ์—๋Š” ์ƒ์šฉ ๋ผ์ด์„ ์Šค๋ฅผ ๋„์ž…ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋˜ํ•œ, ๋ชจ๋ฐ”์ผ ์•ฑ์œผ๋กœ ๊ฐ„๋‹จํ•œ ์กฐ์ž‘๋งŒ ์ง€์›ํ•˜๋ฉด ๋˜๋Š” ์ €ํฌ ์„œ๋น„์Šค์— ๋น„ํ•ด CK Editor๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋งŒํผ, ๋ฌด๊ฒ๊ณ  ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๋” ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์  ์—ญ์‹œ CK Editor๋ฅผ ํฌ๊ธฐํ•˜๊ฒŒ ๋˜๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค.

 

๋‘๋ฒˆ์งธ๋กœ ๊ณ ๋ คํ•œ ๊ฒƒ์€ Toast UI์ž…๋‹ˆ๋‹ค.

 

Toast UI ์—ญ์‹œ ์ž˜ ์•Œ๋ ค์ง„ ์—๋””ํ„ฐ๋กœ, CK Editor์™€ ๋‹ฌ๋ฆฌ MIT ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ถ”ํ›„ ์ƒ์—…์  ์‚ฌ์šฉ์„ ํ•˜๊ฒŒ ๋˜๋”๋ผ๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋Š” ์ ์ด ๋งˆ์Œ์— ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ Toast UI์˜ ๊ฒฝ์šฐ React 18 ๋ฒ„์ „๊ณผ ์•„์ง ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ์‹ค์ œ๋กœ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณธ ๊ฒฐ๊ณผ ๋ฒ„์ „ ๋ฌธ์ œ๋กœ ์ธํ•œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

@toast-ui/react-editor ๋ฒ„์ „ 3.2.3์€ react 17.x.x ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ์—์„œ react 18.x.x๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋Œ์ด ๋ฐœ์ƒ

 

'--legacy-peer-deps' ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด npm์ด ๋™์‹œ๋Œ€ ์ด์ „์˜ ์˜์กด์„ฑ ํŠธ๋ฆฌ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์„ค์น˜๋ฅผ ์‹œ๋„ํ•œ๋‹ค๋Š” ์ผ์‹œ์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์ด ์žˆ์—ˆ์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•  ๊ฒฝ์šฐ, ์ถ”ํ›„์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๋ฐฐ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์‹œ๋„ ๋์—, ์ €ํฌ๋Š” React-Quill ์—๋””ํ„ฐ๋ฅผ ์ฑ„ํƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ react-quill ์ ์šฉ ์—ญ์‹œ ์‰ฝ์ง€๋งŒ์€ ์•Š์•˜๋Š”๋ฐ์š”, ์—๋””ํ„ฐ๋ฅผ ์ ์šฉ์‹œํ‚ค์ž ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ๋งˆ์ฃผ์น˜๊ฒŒ ๋œ๊ฒ๋‹ˆ๋‹ค.

 

Warning: findDOMNode is deprecated and will be removed in the next major release. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-find-node

 

์ด๋Ÿฌํ•œ ์—๋Ÿฌ๋ฉ”์„ธ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋”๋‹ˆ, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์›์ธ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 


findDOMNode : React์—์„œ DOM ์š”์†Œ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ

- React 16.3 ์ดํ›„๋กœ, ์ด ๋ฉ”์„œ๋“œ๋Š” ์ ์ฐจ ํ๊ธฐ๋  ์˜ˆ์ •์ด๋ฉฐ, ๊ทธ ๋Œ€์‹  ref๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์ด ๊ถŒ์žฅ

 

๊ทธ๋Ÿฌ๋‚˜ React Quill ์ž์ฒด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์—,

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด React Quill์˜ ์—…์ŠคํŠธ๋ฆผ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•จ


 

๐Ÿ˜ฅ๐Ÿ˜ฅ๐Ÿ˜ฅ...

 

ํ•˜์ง€๋งŒ, ํฌ๊ธฐํ•  ์ˆ˜ ์—†๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ฐพ์•„๋ณด๋˜ ์ค‘ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฃผ์†Œ๋ฅผ ์ฐพ์•˜๊ณ , ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ๋งˆ์ง€๋ง‰ ์œ ์ €๋ถ„๊ป˜์„œ ์•Œ๋ ค์ฃผ์‹  ๋Œ€๋กœ, react-quill-new๋ฅผ ์ ์šฉํ•ด๋ณด์•˜๋”๋‹ˆ ์›ํ•˜๋Š” ์—๋””ํ„ฐ๊ฐ€ ์ž˜ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค !!

 

https://github.com/zenoamaro/react-quill/issues/972

 

React 19 will remove findDOMNode · Issue #972 · zenoamaro/react-quill

React 19 will be officially released in June/July 2024 and it removes the deprecated ReactDOM.findDOMNode utility. It appears that this will prevent react-quill users from upgrading to React 19. I ...

github.com

 

์ข‹์€ ๊ธฐํšŒ๋ฅผ ์–ป์€ ๋งŒํผ ์ตœ์„ ์„ ๋‹คํ•ด์„œ ์ข‹์€ ๊ฒฐ๊ณผ ์–ป์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :)

์˜ค๋Š˜ ๊ธฐ์‚ฌ๋„ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ‘์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿค๐Ÿค