Lottie web for React
Blog : https://medium.com/@tanisha_verma/lottie-and-react-hooks-1adb4713446b
Lottie-web-react is a wrapper for lottie-web using React hooks.
For more information on lottie-web visit https://github.com/airbnb/lottie-web
Demo : https://tanisha-verma.github.io/lottie-web-react/
Installation
Install through npm:
npm install --save lottie-web-react
Usage
import React, { useState } from 'react'
import Lottie from 'lottie-web-react'
let watchAnimationData = require('./stopwatch.json')
const renderer ='svg'
const rendererSettings = {
preserveAspectRatio: 'xMinYMin slice',
}
function MyAnimation() {
const [playingState, setPlayingState] = useState('play')
const [autoplay, setAutoplay] = useState(false)
const [loop, setLoop] = useState(true)
const [path, setPath] = useState('https://assets2.lottiefiles.com/datafiles/zc3XRzudyWE36ZBJr7PIkkqq0PFIrIBgp4ojqShI/newAnimation.json')
const [animationData, setAnimationData] = useState(watchAnimationData)
const [speed, setSpeed] = useState(1)
const [direction, setDirection] = useState(1)
return (
<Lottie
options={{
renderer: renderer,
loop: loop,
autoplay: autoplay,
path: path,
animationData: animationData,
rendererSettings: rendererSettings
}}
playingState={playingState}
speed={speed}
direction={direction}
/>
)
}
export default MyAnimation
Props
options
Used for loading the animation
- animationData: an Object with the exported animation data.
- path: the relative path to the animation object. (animationData and path are mutually exclusive)
- loop: true / false / number
- autoplay: true / false it will start playing as soon as it is ready
- name: animation name for future reference
- renderer: 'svg' / 'canvas' / 'html' to set the renderer
Note : If path and animationData both are passed then the animation instance is created using path and not animationData.
playingState :
Accepts three values : 'play' , 'pause' or 'stop' .
'play' : Plays lottie animation once the animation is loaded by using lottie-web's play() method.
'pause' : Plays lottie animation once the animation is loaded. Uses lottie-web's pause() method.
'stop' : Stops lottie animation if the animation is loaded by using lottie-web's stop() method.
id
Optional.
className
Pass custom class to modify the container.
direction
Accepts two values : '1' or '-1' .
Uses lottie-web's setDirection() method.
1 is forward, -1 is reverse.
speed
Accepts number.
Uses lottie-web's setSpeed() method.
1 is normal speed.
goToAndPlay
Type : object.
Should contain following parameters :
value
: numeric value.
isFrame
: defines if first argument is a time based value or a frame based (default false).
Uses lottie-web's goToAndPlay() method.
playSegments
Type : object.
Should contain following parameters :
segments
: array. Can contain 2 numeric values that will be used as first and last frame of the animation. Or can contain a sequence of arrays each with 2 numeric values.
forceFlag
: boolean. If set to false, it will wait until the current segment is complete. If true, it will update values immediately.(default false).
Uses lottie-web's playSegments() method.
eventListeners
Type : array.
You can pass list of events and its callbacks to dispatch any action once the event is triggered.
Example use case:
[{
eventName: 'loopComplete',
callback: () => { setLoopCounter(loopCounter + 1) }
}]
Once a loop is completed by animation the event 'loopComplete' is triggered and it calls setLoopCounter action to increment the loopCounter.
Following events can be added:
- complete
- loopComplete
- enterFrame
- segmentStart
- config_ready (when initial config is done)
- data_ready (when all parts of the animation have been loaded)
- data_failed (when part of the animation can not be loaded)
- loaded_images (when all image loads have either succeeded or errored)
- DOMLoaded (when elements have been added to the DOM)
- destroy