Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ReactJS - Replacing Redux with RxJS
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Jarl André Hübenthal
March 05, 2017
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ReactJS - Replacing Redux with RxJS
Jarl André Hübenthal
March 05, 2017
More Decks by Jarl André Hübenthal
See All by Jarl André Hübenthal
Fuck redux! The true story about “Replacing Redux with RxJS”
jarlah
0
230
Other Decks in Programming
See All in Programming
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
550
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
Jetpack Compose Mechanisms
skydoves
3
820
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
32k
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
golang-bob.pdf
iwatsukayura
0
130
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
phperだってパンチカードでコーディングしたい
o0h
PRO
0
330
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
150
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
0
920
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Why Our Code Smells
bkeepers
PRO
340
58k
Paper Plane
katiecoart
PRO
5
54k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
440
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Transcript
ReactJS Replacing Redux with RxJS Jarl André Hübenthal 7. mars
2017
Flux Unidirectional data ow
Redux Based on the ux pattern
React + Redux My experience from using Redux: No simple
way for cancelling promises Most features require redux-[feat] dependency redux-thunk, redux-observable, redux-logger etc. The 1000 dependencies hell.
My solution?
React + RxJS!
React + RxJS Much like ux
React + RxJS Still based on the ux pattern Functional
reactive programming map, atMap, switchMap, lter, scan, do Possible to emulate redux single store or Go multi store powerful testing with Marble tests
React + RxJS // counterStore.js export const inc$ = new
Subject().map( () => (count) => count + 1 ); export const dec$ = new Subject().map( () => (count) => count - 1 ); export const counter$ = ( actions = { inc$, dec$ } ) => createStore( 'counter', Observable.merge(actions.inc$, actions.dec$), Observable.of(0) ); export default counter$();
React + RxJS // CounterComponent.jsx const Counter = (props) =>
( <div> <span>{props.counter}</span> <button onClick={props.inc}>Increase</button> <button onClick={props.dec}>Decrease</button> </div> );
React + RxJS // CounterContainer.js import counter$, { inc$, dec$
} from './counterStore'; import inject from 'react-rxjs/dist/RxInject'; const data = { counter$ }; const commands = { inc$, dec$ }; export default inject(data, commands)(Counter);
React + RxJS const inc = '-xxx--xx---'; const dec =
'----yy--yyy'; const expected = '01232123210'; const expectedStateMap = {...}; const inc$ = testScheduler.createHotObservable(inc); const dec$ = testScheduler.createHotObservable(dec); const counter$ = createCounter({ inc$, dec$ }); testScheduler.expectObservable(counter$).toBe( expected, expectedStateMap ); testScheduler.flush();