useTransition

1. 모듈 불러오기

import {useTransition, animated} from 'react-spring'

2. 사용하기

useTransition 매개변수

  • 첫 번째인자 : 상태 전달(boolean, array, ...)

  • 두 번째인자 : array와 같이 순환되는 item이라면 (item) => item.key 와 같이 item의 키 추출 하나의 단일 요소만 애니메이션 key 한다면 null을 설정해 매개변수 생략

  • 세 번쨰인자 : animation 순서

const [상태, 상태 업데이트 함수] = useState(false)
const transitions = useTransition(상태, null, {
// 기본 스타일 속성 → transition 끝남 
from: { opacity: 0 },
// transition 시작 
enter: { opacity: 1 },
// transition 끝나기 직전 
leave: { opacity: 0 },
})
// map에 전달되는 인자  
// item : 상태 
// key : 배열이라면 useTransition에서 추출한 key 값 (그외엔 하나의 키를 가짐) 
// props : useTransition에 전달 된 스타일 속성 
return transitions.map(({ item, key, props }) => 
    console.log(item) // 상태 
)

2.1 예제

2.1.1 토글 기능 사용

2.2.1 배열

전달되는 상태가 배열이라면 useTransition의 두번째 인자는 null이 아닌 item을 추출하는 식을 사용해야한다.

2.2 API

Property

Type

Description

initial

obj/fn

최초값 (optional, null도 될 수 있음)

from

obj/fn

기준 값 (optional)

enter

obj/fn/array(obj)

animation이 시작할 때 적용되는 것

update

obj/fn/array(obj)

animation이 업데이트 될 때 적용되는 것 (자체 hook으로 새로운 값 업데이트 가능)

leave

obj/fn/array(obj)

animation이 끝날 때 적용되는 것

trail

number

animation 시작 시간 지연(초 단위), enter/update/leave에 추가 가능

unique

bool/fn

true라면, 들어가고 나오는 아이템들은 같은 key를 재 사용함

두 번 이상 렌더링 되지 않도록 하는 속성

reset

ool/fn

‘unique’와 같이 사용되며, enter 아이템들을 처음부터 시작하게 함

onDestroyed

fn

object들이 완전히 사라졌을 때 호출 됨

3. 오류

배열을 상태로 전달 했을 경우 key 값을 설정하지 않으면 전달된 첫 번째 아이템만 출력이 되는 현상이 나타난다. 2.2.1 배열 코드 처럼 고유한 key 값을 전달해서 충돌이 일어나지 않도록 해야한다.

4. 실습

5. 참고

sideToggle 예제이다. useTransition을 사용하여 구현

Last updated

Was this helpful?