๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ“บ Front End/- React, Next.js

[React-Spring ๊ณต์‹ ๋ฌธ์„œ๋กœ ๋ฐฐ์šฐ๊ธฐ] React-Spring ์†Œ๊ฐœ

by Wonit 2020. 11. 4.

 

React-Spring์€ ์Šคํ”„๋ง์˜ ๋ฌผ๋ฆฌ์— ๊ธฐ๋ฐ˜ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.


๋Œ€๋ถ€๋ถ„์˜ UI animation์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ณ , React-Spring์€ ๋‹น์‹ ์˜ ์•„์ด๋””์–ด๋ฅผ ์›€์ง์ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํžˆ ์œ ์—ฐํ•œ Tools๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ˜„๋Œ€์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์— ์ ‘๊ทผํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์•„๋‹ค.


์ด๊ฒƒ์€ Christopher Chedau์˜ animated์™€ Cheng Lou์˜ react-motion์— ๋งค์šฐ ์˜๊ฐ์„ ๋ฐ›์•˜๋‹ค.


๊ทธ๋ฆฌ๊ณ  ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ๊ณผ React-motion์˜ ์‚ฌ์šฉ ํŽธ์˜์„ฑ์„ ๊ณ„์Šนํ•œ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ๋Œ€๋ถ€๋ถ„ ํ•„์ˆ˜์ ์ด๋ฉฐ ๋ฐ˜์‘ ๋™์ž‘์€ ๋Œ€๋ถ€๋ถ„ ์„ ์–ธ์ ์ด๊ณ  ๋ฐ˜์‘ ์Šคํ”„๋ง ๋ธŒ๋ฆฌ์ง€ ๋‘˜ ๋‹ค ํ•„์ˆ˜์ ์ด๋‹ค.


๋‹น์‹ ์€ ๋‹น์‹ ์˜ ๊ฒฌํ•ด๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋ฐ˜๋“œ์‹œ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ์ž‘๊ณ  ๋ช…์‹œ์ ์ธ ํšจ์šฉ ํ•จ์ˆ˜๋กœ ์–ผ๋งˆ๋‚˜ ์‰ฌ์šด ์ •์  ๋ฐ์ดํ„ฐ๊ฐ€ ์ž‘๋™๋˜๋Š”์ง€์— ๋†€๋ž„ ๊ฒƒ์ด๋‹ค.

์„ค์น˜

npm install react-spring

Platforms

React-Spring์€ Cross Platform์ด๋‹ค.


web๊ณผ React-native, React-native-web์„ ์ง€์›ํ•˜๋ฉฐ ์‹ค์šฉ์ ์ธ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์„ ์ง€์›ํ•œ๋‹ค.

Browser Support

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์—๋ฒ„๊ทธ๋ฆฐ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•ด ํŽธ์ง‘๋œ es-module๋กœ์„œ ๋ธŒ๋ผ์šฐ์ € ๋ชฉ๋ก ๊ตฌ์„ฑ์œผ๋กœ 1% > not dead, ie 11, op_mini not all.

 

๋ ˆ๊ฑฐ์‹œ ๋Œ€์ƒ์„ ์ง€์›ํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ๋ชจ๋“ˆ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋Œ€์ƒ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ณตํ†ต์ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


JS๋Š” ๋‹จ์ˆœํžˆ .cj๋ฅผ import๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ export ํ•œ๋‹ค.

ํฌ๊ธฐ

ํฌํ•จ๋œ ๋ชจ๋“  ๊ฒƒ์ด ํ˜„์žฌ 10.7๋กœ ๊ท€ํ•˜์—๊ฒŒ ์ œ๊ณต๋จKB(์›น), 9.7KB(์žฌ์ž‘์„ฑ) ๋˜๋Š” 6.9KB(/๋ฒ”์šฉ ๋‚ด๋ณด๋‚ด๊ธฐ) ๊ทธ ํฌ๊ธฐ๋Š” ๊ถ๊ทน์ ์œผ๋กœ ๋‹น์‹ ์˜ ๋นŒ๋“œ์ฒด์ธ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ๊ฒƒ์ด๊ณ  ๋‚˜๋ฌด ์…ฐ์ดํ‚น์œผ๋กœ ์ค„์–ด๋“ค ์ˆ˜ ์žˆ๋‹ค.


์˜ˆ๋ฅผ ๋“ค์–ด ์ปฌ๋Ÿฌ ์ธํ„ฐํด์ด ์—†๋Š” Spring์„ ์ˆ˜์ž…ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ (/๋ฒ”์šฉ ๋‚ด๋ณด๋‚ด๊ธฐ ์‚ฌ์šฉ) 4.7์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.KB.

Why Springs and not durations

๋‹น์‹ ์ด ์—ฐ๊ตฌํ•˜๊ฒŒ ๋  ์›๋ฆฌ๋Š” ์Šคํ”„๋ง์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ๊ทธ๊ฒƒ์€ ์ •์˜๋œ ๊ณก์„ ์ด๋‚˜ ์ •ํ•ด์ง„ ์ง€์†์‹œ๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.


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


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

 

Andy Matuschak(ex Apple UI-Kit developer)์ด ํ•œ ๋ฒˆ ํ‘œํ˜„ํ–ˆ๋“ฏ์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ง€์†์‹œ๊ฐ„๊ณผ ๊ณก์„ ์— ์˜ํ•ด ํŒŒ๋ผ๋ฏธํ„ฐํ™”๋œ ์• ๋‹ˆ๋ฉ”์ด์…˜ API๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์†์ ์ด๊ณ  ์œ ๋™์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ฑ๊ณผ ๋ฐ˜๋Œ€๋œ๋‹ค.

 

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

๋Œ“๊ธ€