React-dnd: ์ผ๋ฐ˜ ES5 ์˜ˆ์ œ๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค

์— ๋งŒ๋“  2015๋…„ 06์›” 19์ผ  ยท  32์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: react-dnd/react-dnd

์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์ƒˆ๋กœ์šด ES7 ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์น˜๋ฅผ ๋ˆ„๋ฆฌ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์–ธ์–ด ๊ธฐ๋Šฅ (ํŠนํžˆ ES7 ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์™€ ๊ฐ™์€ ์‹คํ—˜์  ๊ธฐ๋Šฅ)์„ ๋ชจ๋‘ ๋„์ž…ํ•˜์ง€ ์•Š์€ ๋ช‡ ๊ฐ€์ง€ ์ž‘์—… ์˜ˆ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์ •๋ณด ๊ณผ๋ถ€ํ•˜์— ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ์—์„œ. ์˜ˆ์ œ์˜ ์œ ์šฉ์„ฑ์€ ์‹คํ—˜์  ์–ธ์–ด ๊ธฐ๋Šฅ์œผ๋กœ ์–ด์ˆ˜์„  ํ•ด์ง€๋ฉด ํฌ์„๋ฉ๋‹ˆ๋‹ค.


๊ด€๋ฆฌ์ž์˜ ํŽธ์ง‘ : ์—ฌ๊ธฐ์—์„œ ์ถ”์ ํ•˜์‹ญ์‹œ์˜ค :
https://github.com/vkbansal/react-dnd-es5-examples


๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹น์‹ ์˜ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ๋žŒ๋“ค์ด ES6 (๊ทธ๋ฆฌ๊ณ  ๋” ๋‚˜์œ ๊ฒƒ์€ ES7) ๊ตฌ๋ฌธ์„ ๋ฐฐ์šฐ๋„๋ก ๊ฐ•์š”ํ•˜๋Š” ๊ฒƒ์€ _best_์—์„œ _hostile_์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋†€๋ผ์šด ๋ชจ๋“ˆ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ES5 ๋ฒ„์ „์˜ _one_ ์˜ˆ์ œ๋ฅผ ES5 ์˜ˆ์ œ ํด๋”๋กœ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? PR์„ ์ˆ˜๋ฝํ•˜๊ฒ ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ๋ฅผ ์š”์ฒญํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ES6 ๋ฐ ES7์— ์ต์ˆ™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฅด ํ•œ์ˆจ.

๋ชจ๋“  32 ๋Œ“๊ธ€

๊ทธ๋Ÿฌํ•œ ๊ณตํ—Œ์„ ๊ธฐ๊บผ์ด ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค.

ํŠœํ† ๋ฆฌ์–ผ ์˜ˆ์ œ๋Š” ๋ชจ๋‘ ES5, ES6 ๋ฐ ES7๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
http://gaearon.github.io/react-dnd/docs-tutorial.html

๋ชจ๋“  ๋ฌธ์„œ ํŽ˜์ด์ง€์—๋Š” ES5, ES6 ๋ฐ ES7์˜ ์˜ˆ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
http://gaearon.github.io/react-dnd/docs-drag-source.html
http://gaearon.github.io/react-dnd/docs-drop-target.html
๊ธฐํƒ€

๋ถˆํ–‰ํžˆ๋„ ๋ชจ๋“  ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์ด์‹ ํ•  ์‹œ๊ฐ„์ด ์—†์—ˆ์ง€๋งŒ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌธ์„œ ์‚ฌ์ดํŠธ์— ES5 ์˜ˆ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. http://gaearon.github.io/react-dnd/docs-overview.html

image

๋‚˜๋Š” github repo์˜ ์™„์ „ํ•˜๊ณ  ๊ธฐ๋Šฅ์ ์ธ ์˜ˆ์ œ๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ES6 / 7์ด ์ฃผ๋ฅ˜๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ES6 / 7 ์˜ต์…˜์ด์žˆ๋Š” ES5 ์˜ˆ์ œ๊ฐ€ ๋” ๋ฐ”๋žŒ์งํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๋™์‹œ์— ๋ฐฐ์šธ ํ•„์š”๊ฐ€์—†๊ณ  ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ES5๋กœ ํŠธ๋žœ์Šค ํŒŒ์ผ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด react-dnd๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ES6๋Š” ์ด๋ฏธ ์–ธ์–ด๊ฐ€ ์™„์„ฑ๋˜๊ณ  Babel์ด ์ˆ˜๋งŽ์€ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ์ฃผ๋ฅ˜๋กœ ์ด๋ฏธ ์ฃผ๋ฅ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ๋žŒ๋“ค์ด ES6 (๊ทธ๋ฆฌ๊ณ  ๋” ๋‚˜์œ ๊ฒƒ์€ ES7) ๊ตฌ๋ฌธ์„ ๋ฐฐ์šฐ๋„๋ก ๊ฐ•์š”ํ•˜๋Š” ๊ฒƒ์€ _best_์—์„œ _hostile_์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋†€๋ผ์šด ๋ชจ๋“ˆ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ES5 ๋ฒ„์ „์˜ _one_ ์˜ˆ์ œ๋ฅผ ES5 ์˜ˆ์ œ ํด๋”๋กœ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? PR์„ ์ˆ˜๋ฝํ•˜๊ฒ ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ๋ฅผ ์š”์ฒญํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ES6 ๋ฐ ES7์— ์ต์ˆ™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฅด ํ•œ์ˆจ.

๋‚˜๋Š” ์—ฌ๊ธฐ ์‚ฌ๋žŒ๋“ค์˜ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. @gaearon ๋‹น์‹ ์€ ์‚ฌ๋žŒ๋“ค์ด ๋‹จ์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ES6 / ES7์„ ๋ฐฐ์šฐ๋„๋ก ๊ฐ•์š”ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ๋žŒ๋“ค์ด ๋Œ€์‹  ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ด๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๋„์„œ๊ด€์€ ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๊ทธ๊ฒƒ์— ๋ฐ˜๋Œ€ ํ•  ์œ ์ผํ•œ ๊ฒƒ์€์ด ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. ์ €๋Š” JS ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— (์ €๋Š” Ruby ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค) ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์ œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค (๋‚˜๋Š” ์ƒˆ๋กœ์šด ๊ตฌ๋ฌธ์— ๋ฐ˜๋Œ€ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์ฃผ๋ฅ˜ ํ‘œ์ค€ ์ฑ„ํƒ).
์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ React์˜ ํ‘œ์ค€ DnD ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€๋˜๋„๋กํ•˜๋ ค๋ฉด์ด๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ๋ณด๋‹ค ์ข‹๋“  ๋‚˜์˜ ๋“ ๊ฐ„์— ๋‹ค๋ฅธ "์‰ฌ์šด"์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค ..

๋‹ค๋ฅธ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

์ฐธ๊ณ ๋กœ, ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์ด ์•„๋‹™๋‹ˆ๋‹ค. JavaScript ์ธ ES6์ž…๋‹ˆ๋‹ค. ES6 ๊ตฌ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ์‹ค์ œ๋กœ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์ด๊ธฐ ๋•Œ๋ฌธ์— react์—๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ์ฃผ๋ฅ˜ ํ‘œ์ค€์„ ์ฑ„ํƒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ES6๊ฐ€ ์ฃผ๋ฅ˜๊ฐ€๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. io.js ๋ฐ react ์ž์ฒด๋Š” ES6๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์ฐฉ๊ฐ์ž…๋‹ˆ๋‹ค.

  1. Wikipedia๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ์ปดํ“จํ„ฐ ์–ธ์–ด์˜ ๊ตฌ๋ฌธ์€ ํ•ด๋‹น ์–ธ์–ด์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์กฐํ™” ๋œ ๋ฌธ์„œ ๋˜๋Š” ์กฐ๊ฐ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ๊ธฐํ˜ธ์˜ ์กฐํ•ฉ์„ ์ •์˜ํ•˜๋Š” ๊ทœ์น™ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

๊ณผ:

ECMAScript 2015 (6th Edition)๋Š” ECMAScript ์–ธ์–ด ์‚ฌ์–‘ ํ‘œ์ค€ ์˜ ์ตœ์‹  ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

์˜ˆ, ES5์™€ ES6์€ ๋ชจ๋‘ JS์ด์ง€๋งŒ ๊ตฌ๋ฌธ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
2.

ES6๊ฐ€ ์ฃผ๋ฅ˜๊ฐ€๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. io.js ๋ฐ react ์ž์ฒด๋Š” ES6๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

"Becoming"๊ณผ "Support for"๋Š” ES6๊ฐ€ ์•„์ง ์ฃผ๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ์—๋Š” ๊ทธ๋Ÿด ๊ฒƒ์ด์ง€๋งŒ ๊ทธ ๋™์•ˆ ES5์—์„œ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ES5 ์˜ˆ์ œ๋ฅผ ๋„ˆ๋ฌด๋‚˜๋„ ์›ํ•œ๋‹ค๋ฉด ์ง์ ‘ ๊ธฐ์—ฌํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ป์Šต๋‹ˆ๊นŒ? @gaearon ์€ ๋งค์šฐ ๋ฐ”์œ ์‚ฌ๋žŒ์ด๋ฉฐ ์—ฌ๊ฐ€ ์‹œ๊ฐ„์—์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ํ˜œํƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ์—ฌ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋Œ€์‹ ์— ๋…ธ๋ ฅํ•˜์‹ญ์‹œ์˜ค.

ํ”„๋กœ์ ํŠธ ์˜ค๋„ˆ ๊ฐœ ์•„๋ก ์€ ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ๊ฐ•์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

gaearon์€ ์ด๋ฏธ์ด lib์—์„œ ์—„์ฒญ๋‚œ ์ž‘์—…์„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ์˜คํ”ˆ ์†Œ์Šค์ด๋ฉฐ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฅผ ์ ๋Œ€์ ์ด๋ผ๊ณ  ๋น„๋‚œํ•˜๊ฑฐ๋‚˜ ๊ทธ๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋น„๋‚œํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ์ ๋Œ€์ ์ธ IMHO์ž…๋‹ˆ๋‹ค.

๊ทธ๋Š” ์˜ˆ์ œ๋ฅผ es5๋กœ ํฌํŒ… ํ•  ์‹œ๊ฐ„์ด ์—†์œผ๋ฉฐ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. es5 / 6 / 7์—๋Š” ์ด๋ฏธ ์˜ˆ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ ๊ตฌ๋ฌธ์€ ๊ทธ๋ ‡๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ babel๊ณผ ๊ฐ™์€ ํŠธ๋žœ์Šค ํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ es6 / 7 ์ฝ”๋“œ๋ฅผ es5๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ฌด๋„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ react-dnd๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ,์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ชฉ์ ์ด '์œ ์ผํ•œ'์†”๋ฃจ์…˜์ด๋˜๋Š” ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค.

@hakanderyal ์ •ํ™•ํžˆ ๋‚ด ์š”์ !

@hakanderyal ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹  ๋ง์ด ๋งž์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘์ด ํ”„๋กœ์ ํŠธ์—์„œ ์—„์ฒญ๋‚œ ์ž‘์—…์„ ํ•ด์ฃผ์‹ 

ES6์—์„œ ์˜ˆ์ œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋Š” ์•…์˜์  ์ธ ์˜๋„๊ฐ€ ์—†์Œ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์•„๋ฌด๋„ ๋น„๋‚œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ ์ด ๋ฌธ์ œ๋Š” ES5 ์˜ˆ์ œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์˜ˆ, ์šฐ๋ฆฌ๋Š” Babel์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋‹น์‹ ์ด ํ•„์š”๋กœํ•˜๋Š” ์˜ˆ์ œ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ lib๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์— ๋” ๋งŽ์€ ๋ณต์žก์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” Rails ํ”„๋กœ์ ํŠธ์—์„œ React์™€ ReactDnD๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์†”์งํžˆ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ํŠธ๋žœ์Šค ํŒŒ์ผ๋Ÿฌ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์–ด๋–ค ์‚ฌ๋žŒ๋“ค (๋‚˜ ์ž์‹ ์„ ํฌํ•จ)์€ JS ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ํ•œ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ๊ธฐ์—ฌ์ž ๋˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ์—ฌ์ž๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ์ฃผ๋„ํ•˜๊ณ  @gaearon๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@BTS_twt แ„ แ„ แ„ แ„ แ„ แ„ แ„ แ„

: +1 : ๋›ฐ์–ด๋‚œ @vkbansal! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, @vkbansal- ๋‹น์‹ ์€

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„.

์ €๋Š”์ด ํ”„๋กœ์ ํŠธ์™€ ๋ฌธ์„œ ์›น ์‚ฌ์ดํŠธ์—์„œ ๋ช‡ ์ฃผ์™€ ๋ฐค์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.์ด ์›น ์‚ฌ์ดํŠธ๋Š” ์ผ๋ถ€ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ ๋œ ๋ชจ๋“  ๋ฌธ์„œ ํŽ˜์ด์ง€์— ES5, ES6 ๋ฐ ES7 ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์œ ์ผํ•œ JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์›น ์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ž์ฒด๋กœ ๊ธฐ๋Œ€์— ๋ถ€์‘ํ•˜์ง€ ๋ชปํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!

React Europe ํ† ํฌ์—์„œ ๊ฐœ์ธ ๋ฌด๊ธ‰ ์‹œ๊ฐ„์„ ๋ช‡ ์ฃผ์™€ ๋ฐค์„ ๋ณด๋‚ธ ํ›„ ์ž์œ  ์‹œ๊ฐ„์ด ์ƒ๊ธฐ๋ฉด ๊ท€ํ•˜์˜ ์š”์ฒญ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ES5 ์˜ˆ์ œ๋กœ ๋„์›€์„ ์š”์ฒญํ•˜์‹ญ์‹œ์˜ค.

์—ฌ๊ฐ€ ์‹œ๊ฐ„์ด์žˆ์„ ๋•Œ ์ œ์•ˆํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ.

PS @vkbansal ๋•๋ถ„์— ์—„์ฒญ๋‚˜๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…• Gaearon,

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

๋‹น์‹ ์€ ์ผ์„ '์•ž์œผ๋กœ'๋ฐ€์–ด ๋ถ™์ด๊ณ  ๊ณต๊ฐœ์ ์œผ๋กœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .. ์–ด๋Š ์ชฝ๋„ '์‰ฌ์šด'๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด๋ฐ›์€ ๋น„๋‚œ์— ์™„์ „ํžˆ ๋†€๋ž์Šต๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋Ÿด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค)
์˜ˆ : '๊ฐ•์ œ'์‚ฌ๋žŒ .. '์ ๋Œ€์ '
... ํŠนํžˆ ๊ธฐ์—ฌ๋ฅผ ์ดˆ๋Œ€ ํ•œ ๊ฒฝ์šฐ

์ด ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋‹น์‹ ์˜ ๋Œ€์‘์€ ์ €์™€ ๊ฐ™์€ ๋„๋ฐœ์„๋ฐ›๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.

์ด ๋ถ€์ •์ ์ธ ์†Œ์ˆ˜์— ์˜ํ•ด ๋ฏธ๋ฃจ์ง€ ๋งˆ์‹ญ์‹œ์˜ค

์ฝ”๋“œ์™€ ์•„์ด๋””์–ด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Stu

์ด ํ† ๋ก ์„ ๊ณ„์†ํ•˜์ง€ _ ์•Š์œผ๋ ค๋Š” _ ๋‚˜์˜ ์†Œ์›์„ ์กด์ค‘ ํ•ด์ฃผ์‹ญ์‹œ์˜ค. ๋” ์ด์ƒ์ด ์ €์žฅ์†Œ๋ฅผ๋ณด๊ณ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ŠคํŒธ ๋ฉ”์ผ์„ ๋ณด๋‚ด๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ์ž ๊ทธ์ง€๋Š” ์•Š์ง€๋งŒ, ๋‹ค๋ฅธ ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ๊ฒŒ์‹œ๋œ๋‹ค๋ฉด ์ด๊ฒƒ์ดโ€œํ† ๋ก โ€์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ๋” ๋งŽ์€ PR์ด๋‚˜ ์ผ์ข…์˜ ๋ฌด์–ธ๊ฐ€๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ์œ ์šฉํ•œ ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์„œ๋กœ์˜ ๋ง์„ ์˜์›ํžˆ ๋’คํ‹€์–ด "์–‘์ชฝ์„ ๋ชจ๋‘๋“ค์„"์ˆ˜ ์žˆ์ง€๋งŒ ์š”์ ์€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์šฐ๋ ค ์‚ฌํ•ญ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ES5 ์˜ˆ์ œ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ํ˜„์žฌ ES6 / 7์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์งˆ ์ˆ˜์žˆ๋Š” ์™„์ „ํžˆ ์œ ํšจํ•œ ์œ„์น˜. ํ˜„์žฌ ์ œ ์ž…์žฅ์€ ์ œ๊ฐ€์ด ์˜ˆ์ œ๋ฅผ _ ์‹ ์ฒด์ ์œผ๋กœ ์ž‘์—… ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฏธ๋ž˜์— ํ•  ์ˆ˜์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ์€ ์ด ํ›Œ๋ฅญํ•œ ES6 ํ•™์Šต ์ž๋ฃŒ ๋ฅผ ์ง€์ ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋‹น์‹ ์„ ๋„์šธ ์ˆ˜์žˆ๋Š” ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค (์ œ๊ฐ€ ์ง์ ‘ ๋ฐฐ์šด ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค).

๊ฒŒ๋‹ค๊ฐ€์ด ์˜ˆ์ œ์— ์ง‘์ค‘ํ–ˆ๋‹ค๋ฉด 1.0์„ ์ „ํ˜€ ์ถœ์‹œํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ํ›„ ๋ฐ”๋กœ ํ† ํฌ ์ž‘์—…์„ ์‹œ์ž‘ํ•ด์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 1.0์„ ๋‚ด๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ปท์ด์—ˆ์Šต๋‹ˆ๋‹ค. ES5 ์˜ˆ์ œ๊ฐ€์žˆ๋Š” ์ตœ์‹  ๋ฒ„์ „ ์ธ React DnD 0.9.2๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1.0๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, ํŠน์ • ์˜คํ”ˆ ์†Œ์Šค ์—ํ‹ฐ์ผ“์ด ์žˆ์œผ๋ฉฐ ์œ„ ๋Œ“๊ธ€์˜ ์ผ๋ถ€ ๋ฌธ๊ตฌ๊ฐ€์ด๋ฅผ ์œ„๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์ด๊ฒƒ์€ ๋‹น์‹ ์˜ ๋ฌธ์ œ์ด์ง€ ๋‚ด ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด ์—ํ‹ฐ์ผ“์„ ์–ด๊ธฐ๋Š” ๊ฒƒ์ด ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ์ธ๊ธฐ ํ”„๋กœ์ ํŠธ๋ฅผ ํƒœ์›Œ ๋ฒ„๋ฆฌ๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. _ ๊ท€ํ•˜์˜ _ ๋ถˆ๋งŒ์ด ํƒ€๋‹นํ•˜๊ณ  _ ์˜๋ฏธ๊ฐ€ ์ข‹๋‹ค _ ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ „ํ˜€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ์— ๋•€๊ณผ ํ”ผ๋ฅผ ์Ÿ๊ณ  ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ์„ ์ง„์ •์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์ •๋ง ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด ์ด๊ฒƒ์ด ๋” ์ƒ์‚ฐ์ ์ธ ์Šค๋ ˆ๋“œ๋ผ๋ฉด ๊ธฐ์ฉ๋‹ˆ๋‹ค. "๋ˆ„๊ฐ€ ์ž˜๋ชป ๋˜์—ˆ๋Š”๊ฐ€"๋ผ๋ฉด ์ž ๊ทธ๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ฐ์‚ฌ.

@stooboo ์™€ @gaearon์ด ์™„์ „ํžˆ ๋งž์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์˜๊ฒฌ์ด์ด ์—ํ‹ฐ์ผ“์„ ์–ด ๊ธฐ๊ณ  ๋น„๋‚œ์„ ๋ฐ›์•˜๊ฑฐ๋‚˜ ๋‚ด๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ๋ฌด๋ก€ํ•˜๋‹ค๊ณ  ๋Š๋‚€๋‹ค๋ฉด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €๋Š” ๊ทธ๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋งŽ์€ ๋…ธ๋ ฅ๊ณผ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ์ง€๊ธˆ๊นŒ์ง€ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์˜๋„๋Š”์ด ๋ฌธ์ œ ๋งŒ ์ง€์ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ๋„˜์–ด ๊ฐ€๊ณ ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ํ‰์†Œ์™€ ๊ฐ™์ด ์ง„ํ™”ํ•˜๋„๋กํ•ด์•ผํ•œ๋‹ค๊ณ  ๋งํ–ˆ๋‹ค ..

๋ถ€๋„๋Ÿฝ๊ณ  ๋ถ€๋„๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ œ ๋Œ“๊ธ€ @gaearon ์ •๋ง ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๋ช…์˜ ์—ฌ์ง€๊ฐ€ ์—†์ง€๋งŒ ์ด๋ฒˆ์ฃผ๋Š” ์ €์—๊ฒŒ ํž˜๋“  ์ผ์ด์—ˆ๊ณ , ๋‹ต๋‹ตํ•œ ์ˆœ๊ฐ„์— ๋‚˜๋Š” ํ™”๋ฅผ ๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ๋†€๋ผ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค .

๋˜ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ES5์—์„œ ์˜ˆ์ œ๊ฐ€ ์ž‘์„ฑ๋˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋‚ด๊ฐ€ 1.0์„ ์ž‘์„ฑํ•œ ์ฃผ๋œ _reason_์€ ES6 ํด๋ž˜์Šค์—์„œ 0.x๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ์‚ฌ๋žŒ๋“ค ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค : # 109.

์˜ˆ์ œ์—์„œ ES6 ํด๋ž˜์Šค์—†์ด ES6 ํด๋ž˜์Šค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” 1.0์„ ๋ฆด๋ฆฌ์Šคํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ES6๋ฅผ ๋” ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

React๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ _ ์ด๋ฏธ _ ๋นŒ๋“œ ๋‹จ๊ณ„๊ฐ€์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. JSX๋ฅผ ์ปดํŒŒ์ผํ•ด์•ผํ•˜๋‚˜์š”? (๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.) ์ด๋ฏธ ๋นŒ๋“œ ๋‹จ๊ณ„๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ JSX ๋นŒ๋“œ ๋‹จ๊ณ„๋ฅผ Babel ๋นŒ๋“œ ๋‹จ๊ณ„๋กœ ๋Œ€์ฒดํ•˜๋Š” ๋ฐ ๋น„์šฉ์ด ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๊ทธ๊ฒŒ ํŽ˜์ด์Šค ๋ถ๋„ ํ•  ์ผ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ์ œ๊ฐ€ ๊ฐ•์—ฐ์„ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž ์‹œ ๋™์•ˆ์ด ๋„์„œ๊ด€์„ "๊ฑธ๊ธฐ ์œ„ํ•ด"๋– ๋‚˜์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ _ ๋’ค๊ฐ€ ์•„๋‹Œ ์•ž์„ ๋‚ด๋‹ค ๋ณด๋ฉฐ '๊ตฌ์ถ•ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด ๊ฐ„์„ญ์—†์ด ์Šค์Šค๋กœ ์‹œ๊ฐ„์„ ๋ณด๋‚ผ ์ˆ˜์žˆ๋‹ค.

@jeffreywescott ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ์•ˆํ•˜๋‹ค๊ณ  ๋งํ•ด์ค˜์„œ ๊ณ ๋งˆ์›Œ. ๋‚˜๋Š” ์ •๋ง๋กœ ๊ฐ์‚ฌํ•˜๊ณ  ํ‹€๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

: +1 :

@BTS_twt แ„ แ„ แ„ แ„ แ„ แ„ แ„ แ„

๋‚˜๋Š” ํŠœํ† ๋ฆฌ์–ผ ๋Œ€๋ถ€๋ถ„ ES5 (I ๋„ˆ๋ฌด ES6์„ ๋ฐฐ์šธ ์ฒœ์ฒœํžˆ,ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๊ฒฐ๊ตญ ๋‚ด๊ฐ€ ๋ถ„๋ช…ํžˆ JSX๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์žˆ์–ด ๋•Œ๋ฌธ์— ํ•จ๊ป˜ ๋‹ค์Œ destructuring :) https://github.com/jehoshua02/react-dnd-experiment

์—ฌ๊ธฐ์—์„œ ES5 ์˜ˆ์ œ๋ฅผ ์ถ”์ ํ•˜์‹ญ์‹œ์˜ค.
https://github.com/vkbansal/react-dnd-es5-examples

@vkbansal์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋งˆ์นจ๋‚ด ์™„๋ฃŒ ํ•  ์‹œ๊ฐ„์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค : http://vkbansal.github.io/react-dnd-es5-examples/

์‚ฌ๋žŒ๋“ค์˜ ๊ฐ์ •์„ ๋ถˆ๋Ÿฌ ์ผ์œผํ‚ค๋ ค๋Š” ์˜๋„๊ฐ€ ์•„๋‹ˆ์—ˆ๊ณ , ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ณ  ์‹ถ์—ˆ๊ณ , ES6๋กœ ์ „ํ™˜ํ•˜๋”๋ผ๋„ ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์‹คํ—˜์ ์ธ ES7 ๊ธฐ๋Šฅ์ด ํฌํ•จ ๋œ ์˜ˆ์ œ์— ๋Œ€ํ•ด ์ฃผ๋กœ ์šฐ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค. ES6๊ฐ€ ์™„์„ฑ๋˜์—ˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ES6๋กœ ๊ณ„์† ๋ฐ€์–ด ๋ถ™์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. @ gearon ์ด ES6 ์ฝ”๋“œ๋ฅผ ์šฐ์„  ์ˆœ์œ„๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๋ฐ ์˜ฌ๋ฐ”๋ฅธ ์„ ํƒ์„ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐ ๋งํ•˜๋ฉด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋นŒ๋“œ ๋‹จ๊ณ„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋นŒ๋“œ ํ™˜๊ฒฝ์—๋Š” JSX ๋นŒ๋“œ ๋‹จ๊ณ„๊ฐ€ ์žˆ์ง€๋งŒ, ๋นŒ๋“œ ํ™˜๊ฒฝ์€ Node.js๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— JSX ๋Œ€์‹  Babel์„ "์—ฐ๊ฒฐ"ํ•˜๋Š” ๊ฒƒ๋งŒ ํผ ๊ฐ„๋‹จํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ์— ๋Œ€ํ•ด ๋ฐ˜๋“œ์‹œ ์ฑ…์ž„์ง€์ง€ ์•Š๋Š” ํŒ€์—์„œ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@vkbansal ์— ๊ฐ์‚ฌ ๋“œ๋ฆฌ๋ฉฐ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ์ž‘์—…์— ๋Œ€ํ•ด @gaearon ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • ๊ด€๋ จ๋œ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์˜ ๋Œ€๋‹ค์ˆ˜๊ฐ€ ES6์— ๊ฑฐ์˜ ๋“ค์–ด์˜ค์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด,
  • ES7์—์„œ ES5๋กœ ํŠธ๋žœ์Šค ํŒŒ์ผํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ํ•ด๋…ํ•˜๊ธฐ๊ฐ€ ๋ถˆํŽธํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ES7 ๊ธฐ๋Šฅ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์‹คํ—˜์ ์ธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€๋งŒ

ES7์˜ ๋ชจ๋“  ํ™œ์šฉ์„ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค

๊ตฌ๋ฌธ ์  ๋‹จ์ˆœ์„ฑ / ๊ฐ„๊ฒฐํ•จ์„ ์œ„ํ•ด ES7์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๊ตฌ๋ฌธ์˜ ์—ญ์‚ฌ์  ๋ณ€ํ˜•์„ ์•Œ๊ณ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@vkbansal ์˜ˆ์ œ๋ฅผ ๋ชจ์•„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.


๋‘ ๋ฒˆ์งธ ํ•ญ๋ชฉ์˜ ์˜ˆ :

๊นจ๋—ํ•œ ์ฝ”๋“œ :

var DragSourceDecorator = DragSource(ItemTypes.CARD, cardSource,
    function(connect, monitor) {
        return {
            connectDragSource: connect.dragSource(),
            isDragging: monitor.isDragging()
        };
});

var DropTargetDecorator = DropTarget(ItemTypes.CARD, cardTarget,
    function(connect) {
        return {
            connectDropTarget: connect.dropTarget()
        };
});

module.exports = DropTargetDecorator(DragSourceDecorator(Card));

ํŠธ๋žœ์Šค ํŒŒ์ผ ๋œ ์ถœ๋ ฅ ( ์˜ˆ์ œ์—์„œ ) :

Card = (0, _reactDnd.DragSource)(_ItemTypes2['default'].CARD, cardSource, function (connect, monitor) {
    return {
      connectDragSource: connect.dragSource(),
      isDragging: monitor.isDragging()
    };
  })(Card) || Card;
  Card = (0, _reactDnd.DropTarget)(_ItemTypes2['default'].CARD, cardTarget, function (connect) {
    return {
      connectDropTarget: connect.dropTarget()
    };
  })(Card) || Card;
  return Card;

ํŽธ์ง‘ : ์‹ค์ˆ˜๋กœ @emergentcypher ๋ฅผ es5 ์˜ˆ์ œ ์ž‘์„ฑ์ž๋กœ ์ฐธ์กฐ

์ทจ ํ–ˆ์–ด?
์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค! ์ž˜๋ชป๋œ ์žฅ์†Œ์— ๋Œ“๊ธ€์„ ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค!

@adamellsworth ์•„๋ฌด๋„ ES7์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜์ง€

์‚ฌ๋žŒ๋“ค์€ ๋Œ“๊ธ€์„ ๋‹ฌ ๊ถŒ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค! ์ด๊ฒƒ์ด ์˜คํ”ˆ ์†Œ์Šค์˜ ์ข‹์€ ์ ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” "์ œ๊ฑฐํ•ด์ฃผ์„ธ์š”"๋ผ๋Š” ๋ง์ด ์ €์ž๋ฅผ ๊ดด๋กญํžˆ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž๊ฐ€ ๋Œ“๊ธ€๊ณผ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด github์— ์ž‘์—…์„ ๊ฒŒ์‹œํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ES5 ์˜ˆ์ œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ง์ ‘ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

์‚ฌ๋žŒ๋“ค์€ ๋Œ“๊ธ€์„ ๋‹ฌ ๊ถŒ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค! ์ด๊ฒƒ์ด ์˜คํ”ˆ ์†Œ์Šค์˜ ์ข‹์€ ์ ์ž…๋‹ˆ๋‹ค.

@emergentcypher ๋‹น์‹ ์ด ๋งž์Šต๋‹ˆ๋‹ค.

@gaearon ์€ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ES7์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์ž˜ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›น ์‚ฌ์ดํŠธ์— ES6 ๋ฐ ES5 ์˜ˆ์ œ๋ฅผ ๋„ฃ๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž‘์„ฑ์ž๊ฐ€ ๋Œ“๊ธ€๊ณผ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด github์— ์ž‘์—…์„ ๊ฒŒ์‹œํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ž‘์„ฑ์ž๋Š” ์˜๊ฒฌ๊ณผ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์‹ถ์ง€๋งŒ ๊ฑด์„ค์  ์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๊ทธ / ๊ทธ๋…€์˜ ์–ผ๊ตด์„ ์‹ซ์–ดํ•ด์„œ ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋งŒ์œผ๋กœ ์™„์ „ํžˆ ๋ญ”๊ฐ€๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ €์ž๋ฅผ ์š”๊ตฌํ•˜๋ฉด ์ƒ์‚ฌ์—๊ฒŒ ๊ฑธ์–ด์™€ ๋™๋ฃŒ์˜ ๋ถˆ ํ•˜๋‚˜์— ๊ทธ์—๊ฒŒ ๋ฌป๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰