Sometimes, we want to animate list reordering with React
In this article, we’ll look at how to animate list reordering with React
Animate List Reordering with React
To animate list reordering with React, we can use the react-flip-move
package.
To install it, we run:
npm i react-flip-move
Then we add the FlipMove
component and wrap it around the array of items we want to animate when reordering by writing:
import { shuffle } from "lodash";
import { forwardRef, useState } from "react";
import FlipMove from "react-flip-move";
const Num = forwardRef(({ number }, ref) => <div ref={ref}>{number}</div>);
export default function App() {
const [nums, setNums] = useState([1, 2, 3, 4, 5]);
return (
<div>
<button onClick={() => setNums((nums) => shuffle(nums))}>shuffle</button>
<FlipMove>
{nums.map((n) => (
<Num key={n} number={n} />
))}
</FlipMove>
</div>
);
}
We have the Num
component with a ref passed from App
with forwardRef
.
And we assign the ref
to the div.
Next, in App
, we create the nums
state with an array of items.
Then we add a shuffle button that shuffle nums
with the Lodash shuffle
function.
Finally, we put the array we want to animate when we shuffle it in the FlipMove
component.
Now when we click shuffle, we should see the animation generated with the react-filp-move
package.
Conclusion
To animate list reordering with React, we can use the react-flip-move
package.