ํ์ฌ React-Spring์๋ 5๊ฐ์ง Hook์ด ์๋ค.
useSpring
: Data๋ฅผ a ์์ b๋ก ์ด๋์ํค๋ ๋จ์ผ Spring์ด๋ค.useSprings
: ๋ค์ค Spring์ผ๋ก List์ ๊ฐ์ด ๊ฐ๊ฐ์ Spring์ด ์์ง์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉ๋๋ค.useTrail
: ํ๋์ ๋ฐ์ดํฐ์ ์ผ๋ก ๋ค์ค Springs์ ๊ตฌ๋์ํค๋ฉฐ, Spring์ ๊ทธ๋ฅผ ๋ฐ๋ฅด๊ฑฐ๋ ๋ค๋ฅธ ๊ฒ๋ค์ ์ด๋๋ค.useTransition
: mount/unmount๋ฅผ ๋ค๋ฃฌ๋ค.useChain
: ๋ค๋์ ์ ๋๋ฉ์ด์ ์ ํจ๊ป ๋๋ฐํ ๋ ์ฌ์ฉ๋๋ค.
useSpring
๊ฐ์ฅ ์ฌ์ด ๊ฒ์ useSpring์ด๋ค.
ํ์ง๋ง ๋ค๋ฅธ ๊ฒ๋ค๋ ์ด useSpring์ ๊ธฐ๋ฐํ ๋์์ ์ํํ๊ธฐ ๋๋ฌธ์ ์ค์ํ๋ค.
import {useSpring, animated} from 'react-spring'
function App() {
const props = useSpring({opacity: 1, from: {opacity: 0}})
return (
<>
<h1>React Spring์ ์
๋ฌธ</h1>
<animated.div style={props}>I will fade in</animated.div>
</>
)
}
๊ณผ ๊ฐ์ด ์ฌ์ฉ๋ ์ ์๋๋ฐ, ์ฐจ๊ทผ์ฐจ๊ทผ ๋จ๊ณ๋ก ์์๋ณด์.
import
import {useSpring, animated} from "react-spring";
props ๋๊ธฐ๋ ๋ฐฉ๋ฒ (์ ๋ฐ์ดํธ ๋ฐฉ๋ฒ)
animated-values๋ฅผ ๋๊ธฐ๋ ๋ฐฉ๋ฒ์๋ 3๊ฐ์ง๊ฐ ์๋ค.
- ๊ฐ ๋ฎ์ด์ฐ๊ธฐ
- ๊ฐ์ ๋ฆฌํดํ๋ ํจ์ ๋๊ธฐ๊ธฐ
- ์ ๋๋ฉ์ด์ props๋ก ์ ๋ฌํ๊ธฐ.
๊ฐ ๋ฎ์ด์ฐ๊ธฐ
const props = useSpring({opactiy: toggle ? 1: 0})
๋ง์ฝ ์ปดํฌ๋ํธ๋ฅผ ๋ณ๊ฒฝ๋ props๋ฅผ ํตํด re-render ํ๋ค๋ฉด animation์ ์ ๋ฐ์ดํธ ๋ใท.
ํจ์ ๋๊ธฐ๊ธฐ
const [props, set, stop] = useSpring(() => ({opacity: 1}))
set({opacity: toggle ? 1 : 0})
stop()
value๋ฅผ return ํ๋ ํจ์๋ฅผ ์ ๋ฌํ๊ณ set์ ์ด์ฉํด์ ์ ๋ฐ์ดํธ ํ ์ ์๋ค.
์ด๋ฐ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ๋ฉด ์์ ๋ฐฉ๋ฒ์ฒ๋ผ ๋ ๋๋ง๋์ง ์๋๋ค. (๋ ๋๋ง ๋์ง ์๋๋ค๋ ์๋ฆฌ๊ฐ ์ ๋๋ฉ์ด์ ์ด ์คํ๋์ง ์๋๋ค๋ ์๋ฆฌ๋ ์๋)
์ด์ ๊ฐ์ ์ ๋ฐ์ดํธใ กใน ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋น ๋ฅด๊ฒ ๋ฐ์ํ๋ ์ ๋ฐ์ดํธ์ ์ ์ฉํ๊ณ ์ด๋ฅผ ์ ํธํด์ผ ํ๋ค๊ณ ํ๋ค.
์ ํ์ ์ผ๋ก stop()
ํจ์์ ๊ฐ์ ์ ์ง ํจ์๊ฐ ์ฌ ์ ์๋ค.
props ์ด์ฉํ๊ธฐ
return <animated.div style={props}>I WILL FADE</animated.div>
๋๊ธ