react-native-countup
v0.0.2
Published
Customizable react native component for number animations.
Downloads
300
Maintainers
Readme
react-native-countup
Customizable react native component for number animations.
Installation
$ npm install react-native-countup
Usage
import AnimateNumber from 'react-native-countup'
Examples
Basic
The only required property is value
, when this property changes, it automatically interpolates
value and performs animation.
<AnimateNumber value={100}/>
You can also pass in an initial value to interpolate from:
<AnimateNumber initial={50} value={100}/>
Formatting
You can customize text format by specifying formatter
prop, this property must be a function
.
<AnimateNumber value={100} formatter={(val) => {
return '$ ' + parseFloat(val).toFixed(2)
}}/>
Timing function
There're 3 built-in timing functions which are linear
, easeIn
, and easeOut
.
It is also possible customize your timing function, see examples bellow.
Built-in timing function
<AnimateNumber value={100} timing="linear"/>
<AnimateNumber value={100} timing="easeOut"/>
<AnimateNumber value={100} timing="easeIn"/>
Customized timing function
Customized timing function returns a number
which represents the length of animation frame.
interval
Basic interval length of animation frame, default value is 14
ms. You can change this value by interval
prop.
progress
A float number between 0 to 1, which means the progress of animation.
<AnimateNumber value={200}
countBy={1}
timing={(interval, progress) => {
// slow start, slow end
return interval * (1 - Math.sin(Math.PI*progress) )*10
}}/>
Counting
By default this component calculates value increment of each animation frame,
but you can customize this rule by set prop countBy
.
<AnimateNumber value={100} countBy={1} />
But keep in mind if the countBy
value is relative small than value
, the animation may persists for a very long time.
Like the following example, it will tasks 150 seconds to finish the animation.
<AnimateNumber value={10000} interval={15} countBy={1} />
Props
value:number
(required)
The value of AnimateNumber component.
countBy:number
(optional default to null
)
Set this property to force the component's value increase/decrease by this number.
interval:number
(optional default to 14
)
Base interval of each animation frame, in ms
.
steps:number
(optional default to 45
)
Set total frame number of animation, say, if interval is 14 and steps is 30, the animation will take 14x30ms to finish when it uses linear timing function.
timing: 'linear' | 'easeOut' | 'easeIn' | () => number
Custom timing function or use a default timing function.
formatter: () => string
(optional)
This prop accepts a function
which returns a string
as displayed value.
onProgress: () => void
(optional)
A function that triggers when text state has updated.
onFinish: () => void
(optional)
A function that triggers when animation completes.