저는 React + Redux를 배우고 있으며 애니메이션을 수행하는 올바른 방법을 이해하지 못합니다. 예를 들어 설명해 드리겠습니다.Redux/Flux (ReactJS 포함) 및 애니메이션
예를 들어 목록이있어 클릭시 항목을 삭제하고 싶습니다. 애니메이션 효과가 없다면 매우 쉽습니다. 클릭시 REMOVE_ITEM
액션을 전달하면 감속기가 저장소에서 항목을 제거하고 HTML을 다시 렌더링하는 반응을 보입니다.
클릭시 광고 항목을 삭제하는 애니메이션을 추가해 보겠습니다. 따라서 사용자가 항목을 클릭하면 광고 항목 제거 및 고급 효과를 실행하고 싶습니다. ? 내가 할 수있는 방법을 여러 가지 방법을 생각할 수 :
1) 클릭에 내가 REMOVE_ITEM
조치를 파견, 다음 감속기 다음 .fancy-dissolve-animation
의 클래스와 그 요소를 렌더링 반응하고 내가 타이머를 실행 스토어에서 goingToBeDeleted
등의 항목을 표시 두 번째 작업은 REMOVE_ITEM_COMPLETED
입니다. 이 아이디어는 마음에 들지 않습니다. 왜냐하면 여기에 JS 애니메이션을 추가하는 방법 (예 : TweenMax
)과 CSS 애니메이션이 끝날 때 다시 렌더링하는 JS 타이머를 실행하는 방법이 여전히 불분명하기 때문입니다. 좋게 들리지 않는다.
2) ~ 30ms 간격으로 ITEM_REMOVE_PROGRESS
작업을 보내고 저장소에는 애니메이션의 현재 상태를 나타내는 "값"이 있습니다. 나는 그것을 좋아하지 않는다. 왜냐하면 만화가 ~ 2 초간의 애니메이 션을 위해 120 번 ~ 120 번 복사해야하기 때문이다. (말하자면 60fps의 부드러운 애니메이션을 원한다.) 그것은 단순히 메모리 낭비 일 뿐이다.
3) 애니메이션을 완성한 후 애니메이션을 완료 한 후에 만 REMOVE_ITEM
을 보내십시오. 그것이 내가 생각할 수있는 가장 적절한 방법이지만, 사용자가 조치를 취한 직후에 상점에서 물건을 바꾸고 싶습니다. 예를 들어, 애니메이션이 몇 초보다 오래 걸리고 REMOVE_ITEM
이 백엔드와 동기화 될 수 있습니다. 백엔드 API 호출을하기 위해 애니메이션 마침을 기다릴 필요가 없습니다.
읽어 주셔서 감사합니다 - 어떤 제안이 필요하십니까?
데이터에 영향을주지 않는 애니메이션은 redux 저장소 외부에 있어야합니다. –
@MaciejSikora 예, 전적으로 동의합니다. 그렇게해야한다고 생각합니다. 그러나 나는 그것을 달성하기위한 좋은 방법이 무엇인지 아직도 모른다. : – shlajin