redux-observable-middleware

0.2.0 • Public • Published

Redux Observable Middleware

Redux middleware for subscribing to observables in action creators.

Usage

Checkout demo or read below.

import observableMiddleware from 'redux-observable-middleware';
 
const ACTION_TYPE = 'INTERVAL';
 
function reducer(state = null, action) {
  console.log(action);
  switch (action.type) {
  case `${ACTION_TYPE}_ON_NEXT`:
    return action.data;
  case `${ACTION_TYPE}_ON_ERROR`:
    return state;
  case `${ACTION_TYPE}_ON_COMPLETED`:
    return state;
  default:
    return state;
  }
}
 
const store = Redux.createStore(reducer, Redux.applyMiddleware(observableMiddleware));
 
store.subscribe(() => {
  console.log(store.getState());
});
 
store.dispatch({
  type: ACTION_TYPE,
  observable: Rx.Observable.interval(1000).take(5),
});

It's very simple, the middleware will attempt to subscribe to any object with a subscribe method on it. :bowtie:

API

Use redux-observable-middleware just like you would with any other Redux middleware.

import { createStore, applyMiddleware } from 'redux';
import observableMiddleware from 'redux-observable-middleware';
 
const store = createStore(
  reducer,
  applyMiddleware(observableMiddleware));

In your action creator, your action need to have two properties:

  • type: string|object
    • If type is a string, it will dispatch four different actions. Assuming the string is 'ACTION_A', action type will be:
      • ACTION_A immediately
      • ACTION_A_ON_NEXT
      • ACTION_A_ON_ERROR
      • ACTION_A_ON_COMPLETED
    • If type is an object, it will look for keys to specify action types:
      • onSubscribe
      • onNext
      • onError
      • onCompleted
    • When type is an object, any action type with an unspecified key will be ignored. E.g. if you only define onNext, the other three action will never be dispatched.
  • observable: Observable can be any object with a subscribe method on it.

Action object structure

  • onSubscribe action type, object will have all original object properties, including the observable property, except for type property. If type is an object. It will be replaced with the value on type.onSubscribe
  • onNext action type, object will have data and type properties.
  • onError action type, object will have err and type properties.
  • onCompleted action type, object will only have type property.

Readme

Keywords

none

Package Sidebar

Install

npm i redux-observable-middleware

Weekly Downloads

11

Version

0.2.0

License

MIT

Last publish

Collaborators

  • daiweilu