Skip to content

d6u/redux-observable-middleware

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Redux middleware for subscribing to observables

Resources

License

Stars

Watchers

Forks

Packages

No packages published