SetInterval middleware for Redux used to dispatch an action or function periodically.
npm install redux-timer
import { createStore, applyMiddleware } from 'redux';
import timerMiddleware from 'redux-timer';
const store = createStore(reducers, applyMiddleware(timerMiddleware));
To start a timer, you have to dispatch an action with type START_TIMER
with a payload of the following.
- name (required) -
String
representing the name of the timer. - action (required) -
String
matching an action type or aFunction
that you would like to periodically execute. - interval (required) - Timer interval in milliseconds
- runImmediately (optional) -
Boolean
to determine whether to fire the action immediately. This is set totrue
by default.
import { START_TIMER } from 'redux-timer';
export const startTimer = () => ({
type: START_TIMER,
payload: {
name: 'exampleTimer',
action: 'SOME_ACTION_TICK',
interval: 1000,
runImmediately: true
}
});
import { START_TIMER } from 'redux-timer';
export const exampleAction = () => async dispatch => {
dispatch({
type: START_TIMER,
payload: {
name: 'exampleTimer',
action: async () => {
try {
const response = await fetch('https://api.github.com');
const data = await response.json();
dispatch(setData(response.body.result));
} catch (e) {
// do something with this error
}
},
interval: 5000,
runImmediately: false
}
});
};
To stop a timer, you have to dispatch an action with type STOP_TIMER
with a payload of the following.
- name (required) -
String
representing the name of the timer
import { STOP_TIMER } from 'redux-timer';
export const stopTimer = () => ({
type: STOP_TIMER,
payload: {
name: 'exampleTimer'
}
});
- Need to add tests
- Need to add CI/CD