With the React Animation library, we can render animations in our React app easily.
In this article, we’ll take a look at how to get started with the React Animation library.
Installation
We can install the library by running:
npm install -s react-animation
Then we can use the provided components to add animation to our React apps.
AnimateOnChange
We can use the AnimateOnChange library to animate new content when the content changes.
We can a string or any child components inside it.
For example, we can write:
import React, { useState } from "react";
import { AnimateOnChange } from "react-animation";
export default function App() {
const [count, setCount] = useState(0);
return (
<>
<p>
<button onClick={() => setCount((count) => count + 1)}>
increment
</button>
</p>
<AnimateOnChange>{count}</AnimateOnChange>
</>
);
}
We have the count state.
And the state is updated with the increment button.
We render the count in AnimateOnChange so we see some transition effect when we click the increment button.
The default transition effect is the fade effect.
We can set the duration of the animation with the durationOut prop:
import React, { useState } from "react";
import { AnimateOnChange } from "react-animation";
export default function App() {
const [count, setCount] = useState(0);
return (
<>
<p>
<button onClick={() => setCount((count) => count + 1)}>
increment
</button>
</p>
<AnimateOnChange durationOut="1000">{count}</AnimateOnChange>
</>
);
}
The duration is in milliseconds.
The default value is 200.
We can change the animation effect rendered with the animationIn and animationOut props.
For example, we can write:
import React, { useState } from "react";
import { AnimateOnChange } from "react-animation";
export default function App() {
const [count, setCount] = useState(0);
return (
<>
<p>
<button onClick={() => setCount((count) => count + 1)}>
increment
</button>
</p>
<AnimateOnChange
animationIn="bounceIn"
animationOut="bounceOut"
durationOut={500}
>
{count}
</AnimateOnChange>
</>
);
}
We set the animationIn to set the effect to render when new content enters.
The animationOut sets the effect to render when existing content leaves.
Content is styled as inline-block by default, but we can override that by setting the style prop.
Custom Animations
We can add custom animations to the animationIn and animationOut props.
For instance, we can write:
import React, { useState } from "react";
import { AnimateOnChange } from "react-animation";
export default function App() {
const [count, setCount] = useState(0);
return (
<>
<p>
<button onClick={() => setCount((count) => count + 1)}>
increment
</button>
</p>
<AnimateOnChange
animationIn="custom-animation-in 500ms ease-out forwards"
animationOut="custom-animation-out 500ms ease-out forwards"
durationOut={500}
>
{count}
</AnimateOnChange>
</>
);
}
We set the animationIn and animationOut props with the specific effects to render.
Then we would see them displayed when count changes.
Conclusion
We can add simple animations easily to our React app with the React Animation library.