react-interval
Safe React wrapper for setInterval
Installation
npm install --save react-interval
Usage
Quicksart
Start counting on render
import React from 'react';
import ReactInterval from 'react-interval';
const App = React.createClass({
getInitialState() {
return {count: 0};
},
inc() {
this.setState({count: this.state.count + 1});
},
render() {
const {count} = this.state;
return (
<div>
{count}
<ReactInterval timeout={1000} enabled={true} callback={this.inc} />
</div>
);
}
});
React.render(<App />, document.body);
Full example
Chang timeout on the fly, start and stop counting
import React from 'react';
import ReactInterval from 'react-interval';
const App = React.createClass({
getInitialState() {
return {
enabled: false,
timeout: 1000,
count: 0
};
},
inc() {
this.setState({count: this.state.count + 1});
},
render() {
const {timeout, enabled, count} = this.state;
return (
<div>
<ReactInterval {...{timeout, enabled}} callback={this.inc} />
<input type="number" step="200" min="200" max="5000" value={this.state.timeout}
onChange={({target: {value}}) => this.setState({timeout: parseInt(value, 10)})} />
<button disabled={enabled} onClick={() => this.setState({enabled: true})}>
Start</button>
<button disabled={!enabled} onClick={() => this.setState({enabled: false})}>
Stop</button>
{count}
</div>
);
}
});
React.render(<App />, document.body);
Options
callback: React.PropTypes.func.isRequired,
enabled: React.PropTypes.bool,
timeout: React.PropTypes.number
callback
: PropTypes.func.isRequired
Function repeatedly called after timeout
enabled
: PropTypes.bool (default: false)
Should start timer?
timeout
: PropTypes.number (default: 1000)
Timeout before each callback
call
Development and testing
npm install
npm start
Then
open http://localhost:8080
Demo
http://nkbt.github.io/react-interval/example
License
MIT