mst-effect
Version:
Designed to be used with MobX-State-Tree to create asynchronous actions using RxJS.
16 lines (15 loc) • 496 B
JavaScript
import { addDisposer } from 'mobx-state-tree';
import { Subject } from 'rxjs';
import { subscribe } from './utils';
export function effect(self, factory) {
const payloadSource = new Subject();
const effect$ = factory(payloadSource.asObservable());
const subscription = subscribe(self, factory, effect$);
addDisposer(self, () => {
payloadSource.complete();
subscription.unsubscribe();
});
return (payload) => {
payloadSource.next(payload);
};
}