material ui v4 에서는 keyframes 에 props 를 넘겨주면 애니메이션이 작동하지 않게 된다.
나는 꼭 넘겨주어야 할 일이 생겼기 때문에 정말 한참동안 찾은 방법이다.
나와 같이 헤매는 분들을 위해 공유한다.
const defaultProps: StylePropType = {
selectedItem,
rotate,
nbTurn: 9,
};
const classes = useStyles(defaultProps)();
위와 같이 useStyle 인자에 props 를 넘겨준다.
그리고 뒤에 ( ) 를 붙여서 useStyle 의 결괏값(= makeStyle)을 바로 classes 변수에 넘겨주자.
import { makeStyles } from "@material-ui/core/styles";
import { StylePropType } from "./Types";
export const useStyles = (props: StylePropType) => {
return makeStyles(() => ({
"@keyframes ani": {
from: {
transform: `rotate(${props.rotate})`,
},
to: {
transform: `rotate(calc(${props.nbTurn} * 360deg + (-45deg * ${props.selectedItem})))`,
},
},
on: {
animationName: "$ani",
animationDuration: "4s",
animationFillMode: "both",
animationIterationCount: 1,
transitionTimingFunction: "ease-in-out",
},
원래 makeStyle 은 스타일 객체를 반환하는 훅이다.
따라서 makeStyle(() => ({키: 값}) 와 같이 써도 된다.
이제 애니메이션에 props 를 써주니 잘 적용이 되는 모습이다.
'💎 React' 카테고리의 다른 글
SVG 반응형으로 만들기 (0) | 2022.05.09 |
---|---|
pakage-lock.json 과 yarn.lock (0) | 2022.05.02 |
react lazy (0) | 2022.03.31 |
아폴로 클라이언트 (0) | 2022.03.25 |
리액트 Context API, reducer (0) | 2022.03.24 |