
Spring은 입맛에 따라 변경이 가능하다. 만약 이런 설정을 바꾸고 싶다면 useSpring에서 config를 사용하면 된다.
useSpring({ config: { duration: 250 }, ... })
그리고 버전 9 부터 config는 다음처럼 부분적인 업데이트가 가능하다.
const { x } = useSpring({
from: { x: 0 },
config: { frequency: 1 },
})
useEffect(() => {
x.start({ config: { velocity: 0 } })
x.start({ config: { friction: 20 } })
}, [])
다음은 Config에서 사용할 수 있는 property들이다.
| Property | Default | Description |
|---|---|---|
| mass | 1 | 질량 |
| tension | 170 | 에너지 |
| friction | 26 | 저항 |
| clamp | false | 참이면 스프링이 지정된 범위를 넘어섰을 때 정지 |
| precision | 0.01 | 정확도 |
| velocity | 0 | 처음 속도 |
| easing | t => t | default는 linear, d3-ease처럼 커스텀 가능 |
| damping | 1 | 느려지는 정도를 나타내는 비율, frequency가 정의됐을 때 작동 |
| progress | 0 | duration과 함께 쓰면 easing이 시작될 거리 |
| duration | undefined | 0보다 크면 스프링 대신 duration 기반 애니메이션으로 작동 |
| decay | undefined | 감속 정도, true면 default는 0.998 |
| frequency | undefined | damping이 없을 때 초당 진동수, tension은 여기서 파생, friction 은 tension과 damping에서 파생 |
| round | undefined | 애니메이션 중 이 값의 배수로 반올림. from과 to 제외 |
| bounce | undefined | 0보다 클때 overshoot 대신 튀어오름 |
| restVelocity | undefined | 움직이지 않는 것으로 간주되는 가장 작은 속도, default는 precision 값 |
스프링은 config의 몇가지 preset들을 제공한다.
import { ..., config } from 'react-spring'
useSpring({ ..., config: config.default })
| Property | Value |
|---|---|
| config.default | { mass: 1, tension: 170, friction: 26 } |
| config.gentle | { mass: 1, tension: 120, friction: 14 } |
| config.wobbly | { mass: 1, tension: 180, friction: 12 } |
| config.stiff | { mass: 1, tension: 210, friction: 20 } |
| config.slow | { mass: 1, tension: 280, friction: 60 } |
| config.molasses | { mass: 1, tension: 280, friction: 120 } |
위 prop과 preset들은 여기에서 테스트해볼 수 있습니다.