SetInterval middleware for Redux. Used to dispatch an action or function periodically.
npm install redux-timerimport { 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.
- timerName (required) -
Stringrepresenting the name of the timer. - timerAction (required) -
Stringmatching an action type or aFunctionthat you would like to periodically execute. - timerInterval (required) - Timer interval in milliseconds
import { START_TIMER } from 'redux-timer';
export const startTimer = () => ({
type: START_TIMER,
payload: {
timerName: 'exampleTimer',
timerAction: 'SOME_ACTION_TICK',
timerInterval: 1000
}
});import { START_TIMER } from 'redux-timer';
export const exampleAction = () => async dispatch => {
dispatch({
type: START_TIMER,
payload: {
timerName: 'exampleTimer',
timerAction: 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
}
},
timerInterval: 5000
}
});
};To stop a timer, you have to dispatch an action with type STOP_TIMER with a payload of the following.
- timerName (required) -
Stringrepresenting the name of the timer
import { STOP_TIMER } from 'redux-timer';
export const stopTimer = () => ({
type: STOP_TIMER,
payload: {
timerName: 'exampleTimer'
}
});- Need to add tests
- Need to add CI/CD