728x90
반응형
animated value를 사용시에 항상
const animatedY = useRef(new Animated.Value(0)).current;
이런식으로 useRef를 사용한다.
이는 데이터영역의 state 값들이 변화시에 컴포넌트의 리랜더링이 필수적으로 일어날수밖에 없는 상황에
애니메이션값을 초기화시키지 않기 위함이다.
현재 구현한 애니메이션은 스크롤에 따라 opacity 가 변하고, 헤더의 위치및 높이가 변하고 등등
animated.timing 함수를 사용하는 부분과, Animated event 를 사용하는 부분으로 나누어져있다.
가끔 0번째에서 첫번째로 넘어갈때, 애니메이션이 끊기는 현상이 발생하여 디버깅해보니,
리랜더링시에 애니메이션이 초기화되서 그런가 싶었던 이유와는 별개로, nativeDriver를 사용하는 쓰레드에서 에러가 생기는것 같았다.
따라서 useNativeDriver 을 false 로 주니, 해결되었다.
useNativeDriver는 애니메이션 처리 작업을 자바스크립트 엔진이 아닌 네이티브 레벨에서 진행하게 하는 옵션으로 transform, opacity처럼 레이아웃과 관련없는 스타일에만 적용할 수 있다. 예를 들어 레이아웃에 영향을 끼치는 left, width, paddingLeft, marginLeft와 같은 스타일에는 꼭 useNativeDriver를 false로 지정해야 한다.
728x90
반응형
'ReactNative' 카테고리의 다른 글
[ React Native ] jwt-decode error :: invalid base64 for part #2 (Property 'atob' doesn't exist) (0) | 2023.11.09 |
---|---|
[ React Native ] xcode com.facebook.socketrocket.networkthread (0) | 2023.11.07 |
[ React Native ] ImageBackground borderRadius (0) | 2023.11.01 |
[ React Native ] Figma font scale (0) | 2023.10.31 |
[ React Native ] Flatlist / scrollview pagingEnabled 시, offset option (0) | 2023.10.31 |