reactive-rx-redux-js
TypeScript icon, indicating that this package has built-in type declarations

1.2.5 • Public • Published

reactive-rx-redux-js

License: MIT npm version Build Status Coverage Status

Rx-based Redux implementation, inspired by https://github.com/Holmusk/HMReactiveRedux-iOS.git.

Rx store

The first implementation of the store is the RxStore, which can be accessed with:

ReduxStore.Rx.create(...reducersObservable<RxReducer<any>>[]);

In order to use this store, we define BehaviorSubject instances as action creators, as follows:

let action1 = BehaviorSubject<number>(0);
let action2 = BehaviorSubject<string>('');
let action3 = BehaviorSubject<boolean>(false);

Then map these BehaviorSubject objects to emit RxReducer whose type signature is as follows:

type RxReducer<T> = (state: State.Type<T>)State.Type<T>;

Which is a function to be called when new value arrives for a stream. A sample setup is as follows:

let pureReducer1: (state: State.Type<any>, value: any) => State.Type<any> = v => {
  return v.updatingValue('a.b.c', value);
};
 
let reducer1: Observable<RxReducer<any>> = action1.map(v => {
  return (state: State.Type<any>) => pureReducer(state, v);
});
 
let reducer2 = ...;
let reducer3 = ...;
 
let store = new reduxstore.rx.Self(reducer1, reducer2, reducer3);
let wrapper = store.toWrapper();
 
wrapper.numberAtNode('a.b.c').pipe(doOnNext(console.log)).subscribe();
 
action1.next(1);
action2.next(2);
action3.next(3);

Every time the Subject pushes a value, it will be pushed onto the state stream and used to compute the next state.

Dispatch store

The second implementation is the same as normal Redux store, whereby the store is responsible for dispatching actions.

Readme

Keywords

none

Package Sidebar

Install

npm i reactive-rx-redux-js

Weekly Downloads

0

Version

1.2.5

License

MIT

Unpacked Size

22.3 kB

Total Files

23

Last publish

Collaborators

  • haipham