Animations are the important parts of UX that give an additional feel to the users and add some awesomeness to the application. But implementing animations is not that easy especially when you have to keep all the users and devices in mind. So, we have to think out for a simplified and optimized way to create and manage the animations.
Someone said — “Animations give life to the UI components”.
React-Spring is a modern React library based on Spring-physics which is highly flexible and it covers almost all of the UI animation needs. It inherits animated powerful interpolations and performance, as well as React-motion’s ease of use.
Basics of React-Spring
As React-Spring is a modern animation library, it supports both hooks based API and the traditional class-based API as well. The hooks based API is based on 5 kinds of hooks while the class-based API is based on the react-spring components. As the React community is now focussing on functional components for simplicity so we will proceed with the hooks API. These concepts can be interpreted with the class-based API as well because the basics remain the same.
Spring is the basic component of the library and we will use that oftentimes. It acts as a building block of the animations in React-Spring. Spring means a factor that helps a component to move from one point/place to another.
There are 5 major hooks in React-Spring:
- useSpring — a single spring that moves data from a → b
- useSprings — multiple springs, for lists, where each spring moves data from a → b
- useTransition — where we need to mount(add)/unmount(remove) elements transitions
- useTrail — multiple springs where one spring trails/follows behind the other.
- useChain — to queue or chain multiple animations together.
A Basic Demo
Here, we are using the useSpring hook for defining two springs. It is clearly evident that we are taking an object named “from” where the initial value is assigned and a “number” property which signifies the final value. Similarly in the second spring, we are using a “from” object to define the initial value, the opacity property for the final value, and delay property for the delay in animation. Also, we’re using a component defined in react-spring called animated in order to animate our wrapped components.
In this way, the springs also handle other things like CSS properties, colors, absolute lengths, relative lengths, angles, scrolls, HTML attributes, string patterns, and a lot more.
Now that we know the basics of Spring, let’s jump on to some advanced stuff.