
REDUX
https://ignaciochavez.com/how-redux-puts-middleware-together/

@elibelly

@elibelly
đ redux-thunk đ
@elibelly
đ redux-saga đ
@elibelly
đ¤Â redux-observable đ¤
@elibelly

disclaimer
this is not a vs.Â

@elibelly
Eli schĂźtze
@elibelly



redux observable
@elibelly
Reactive programmingÂ
Â

rxJS
 library for composing asynchronous and
event-based programs by using observable sequences
@elibelly
Everything is a stream

@elibelly

MARBLE DIAGRAMS
@elibelly
.map
.filter
.reduce
Â

@elibelly

@elibelly
"the lodash of streams"

@elibelly


@elibelly
Rxjs can be very powerful but...

@elibelly
-
map
-
flatMap
-
concatMap
-
switchMap
-
exhaustMap
@elibelly
When used properly RxJS can be more declarative and concise
Â
raises level of abstraction
Â
focus on the "logic"
@elibelly

@elibelly
rxjs shines in complexity
highly interactive UI or
UI events linked to data events
Â
web sockets
Â
complex, cancellable ajax/fetch
Â
animations / game logic

@elibelly
redux observable

@elibelly
RxJS 5-based middleware for Redux

Action
Action
Action
"Â Compose and cancel async actions to create side effects and more."
@elibelly
Epic
It is a function which takes a stream of actions and returns a stream of actions.
@elibelly

Actions in >> EPIC >> actions outÂ

@elibelly


action$
@elibelly
ASYNC CALLS

@elibelly

Cancellable async
@elibelly

@elibelly
Declarative!
@elibelly

avoid epic failsÂ

@elibelly
walk, don't run

@elibelly
do your homework
learn rxjs
(it may stick around..)
@elibelly
Â
switchMap: every time a new action of the same type occurs, if the first one is pending it will be aborted
exhaustMap: "opposite switch map" new actions get ignored while the original action is pending
concatMap: no actions get ignored but ordering is ensured
mergeMap (flatMap): no actions get ignored but run in parallel so order not guaranteed
Â
Â
@elibelly
 helpful operators: .do() is your console.log friend !
inner workings: epics run after reducer!
Â
when in doubt, read the docs
YOU WILL TRIP ALONG THE WAy and that's okay
@elibelly
it's not for everyone but it's pretty cool
Â
be curious!
you will definitely feel like some sort of code wizard
Â
@elibelly
đ thank you đ
@elibelly
resources
- RxJS Docs: http://reactivex.io/rxjs/
- redux-observable Docs: https://redux-observable.js.org/
- Marble diagram playground: http://rxmarbles.com/
-
Netflix's and lib author Jay Phelps RxJS + Redux + React = Amazing! talk:
https://www.youtube.com/watch?v=AslncyG8whg - That Andre Staltz Reactive Programming Gist - The introduction to Reactive Programming you've been missing - https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
- Learn RxJS GitBook - https://www.gitbook.com/book/btroncone/learn-rxjs/details
- RxJS Visualizer - https://rxviz.com
@elibelly
what about testing?Â
use

@elibelly
Avoiding Epic Fails
By Eli SchĂźtze RamĂrez
Avoiding Epic Fails
A brief glance at redux-observable and using reactive programming for your asynchronous side-effects! Warning: GIFs ahead.
- 1,869