React で styled-components を使っている時に、keyframes に props を渡す方法です。 よく忘れるので忘備録代わりにメモしておきます ✍️
やりたいこと (これは動きません)
const rotate = keyframes`
0% {
transform: rotate(0deg);
}
100% {
// ここでpropsを使いたい... //
transform: rotate(${props.rotation});
}
`
export const Wrapper = styled.div`
&.rotate {
animation: ${rotate} 0.4s ease forwards;
}
`
解決策: keyframes を返す関数を定義する
const rotate = props => {
return keyframes`
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(${props.rotation});
}
`
}
Wrapper 内で props を渡して呼び出し
export const Wrapper = styled.div`
&.rotate {
animation: ${props => rotate(props.deg)} 0.4s ease forwards;
}
`