React Native Stopwatch Timer
A React Native component that provides a stopwatch and timer.
npm install react-native-stopwatch-timer
import { Stopwatch , Timer } from 'react-native-stopwatch-timer'
Stopwatch and Timer Options
Name
Type
Description
Default
start
boolean
starts timer/stopwatch if true, stops if false
false
reset
boolean
stops timer/stopwatch, resets
false
msecs
boolean
includes milliseconds in render of time
false
options
object
describes style of rendered timer/stopwatch
see example
getTime
function
get the formatted value on each tick
(time) => console.log(time)
getMsecs
function
get the number of msecs on each tick
(time) => console.log(time)
Name
Type
Description
Default
laps
boolean
will not count the laps of the stopped stopwatch
false
startTime
number
number of milliseconds to start stopwatch from
0
Name
Type
Description
Default
totalDuration
Integer
number of milliseconds to set timer for
0
handleFinish
function
function to perform when timer completes
() => alert("Timer Finished")
import React , { Component } from 'react' ;
import { AppRegistry , StyleSheet , Text , View , TouchableHighlight } from 'react-native' ;
import { Stopwatch , Timer } from 'react-native-stopwatch-timer' ;
class TestApp extends Component {
constructor ( props ) {
super ( props ) ;
this . state = {
timerStart : false ,
stopwatchStart : false ,
totalDuration : 90000 ,
timerReset : false ,
stopwatchReset : false ,
} ;
this . toggleTimer = this . toggleTimer . bind ( this ) ;
this . resetTimer = this . resetTimer . bind ( this ) ;
this . toggleStopwatch = this . toggleStopwatch . bind ( this ) ;
this . resetStopwatch = this . resetStopwatch . bind ( this ) ;
}
toggleTimer ( ) {
this . setState ( { timerStart : ! this . state . timerStart , timerReset : false } ) ;
}
resetTimer ( ) {
this . setState ( { timerStart : false , timerReset : true } ) ;
}
toggleStopwatch ( ) {
this . setState ( { stopwatchStart : ! this . state . stopwatchStart , stopwatchReset : false } ) ;
}
resetStopwatch ( ) {
this . setState ( { stopwatchStart : false , stopwatchReset : true } ) ;
}
getFormattedTime ( time ) {
this . currentTime = time ;
} ;
render ( ) {
return (
< View >
< Stopwatch laps msecs start = { this . state . stopwatchStart }
reset = { this . state . stopwatchReset }
options = { options }
getTime = { this . getFormattedTime } />
< TouchableHighlight onPress = { this . toggleStopwatch } >
< Text style = { { fontSize : 30 } } > { ! this . state . stopwatchStart ? "Start" : "Stop" } </ Text >
</ TouchableHighlight >
< TouchableHighlight onPress = { this . resetStopwatch } >
< Text style = { { fontSize : 30 } } > Reset</ Text >
</ TouchableHighlight >
< Timer totalDuration = { this . state . totalDuration } msecs start = { this . state . timerStart }
reset = { this . state . timerReset }
options = { options }
handleFinish = { handleTimerComplete }
getTime = { this . getFormattedTime } />
< TouchableHighlight onPress = { this . toggleTimer } >
< Text style = { { fontSize : 30 } } > { ! this . state . timerStart ? "Start" : "Stop" } </ Text >
</ TouchableHighlight >
< TouchableHighlight onPress = { this . resetTimer } >
< Text style = { { fontSize : 30 } } > Reset</ Text >
</ TouchableHighlight >
</ View >
) ;
}
}
const handleTimerComplete = ( ) => alert ( "custom completion function" ) ;
const options = {
container : {
backgroundColor : '#000' ,
padding : 5 ,
borderRadius : 5 ,
width : 220 ,
} ,
text : {
fontSize : 30 ,
color : '#FFF' ,
marginLeft : 7 ,
}
} ;
AppRegistry . registerComponent ( 'TestApp' , ( ) => TestApp ) ;