JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 23
  • Score
    100M100P100Q61077F
  • License MIT

SetInterval middleware for Redux

Package Exports

  • redux-timer

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (redux-timer) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

redux-timer npm versionnpm downloads

SetInterval middleware for Redux used to dispatch an action or function periodically.

Installation

npm install redux-timer

Usage

import { createStore, applyMiddleware } from 'redux';
import timerMiddleware from 'redux-timer';

const store = createStore(reducers, applyMiddleware(timerMiddleware));

How to start a timer

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 a Function 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 to true by default.

Using action as an action type

import { START_TIMER } from 'redux-timer';

export const startTimer = () => ({
  type: START_TIMER,
  payload: {
    name: 'exampleTimer',
    action: 'SOME_ACTION_TICK',
    interval: 1000,
    runImmediately: true
  }
});

Using action as a Function

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
    }
  });
};

How to stop a timer

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'
  }
});

TODO List

  • Need to add tests
  • Need to add CI/CD