Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Single State Atom apps
Search
Rogério Chaves
December 02, 2015
Technology
1
180
Single State Atom apps
If state is the root of all evil, why don't we put it right on the root?
I'll show 3 examples
Rogério Chaves
December 02, 2015
Tweet
Share
More Decks by Rogério Chaves
See All by Rogério Chaves
O problema das Fake News
rogeriochaves
1
180
A Brief History of Frontend
rogeriochaves
1
49
Implementando PWA em qualquer projeto
rogeriochaves
2
210
Microfrontends
rogeriochaves
2
140
Introducción a Elm
rogeriochaves
0
71
Immutable App Architecture
rogeriochaves
0
220
Faça programação funcional com JavaScript codando menos
rogeriochaves
4
490
Introduction to Elm
rogeriochaves
2
140
Playing with RxJS
rogeriochaves
0
100
Other Decks in Technology
See All in Technology
チームで安全にClaude Codeを利用するためのプラクティス / team-claude-code-practices
tomoki10
6
3.1k
迷わない!AI×MCP連携のリファレンスアーキテクチャ完全ガイド
cdataj
0
410
ECS_EKS以外の選択肢_ROSA入門_.pdf
masakiokuda
1
120
AWS re:Invent 2025 を振り返る
kazzpapa3
2
110
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
60k
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
4
21k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
松尾研LLM講座2025 応用編Day3「軽量化」 講義資料
aratako
15
4.9k
Redshift認可、アップデートでどう変わった?
handy
1
130
202512_AIoT.pdf
iotcomjpadmin
0
190
自己管理型チームと個人のセルフマネジメント 〜モチベーション編〜
kakehashi
PRO
5
2.5k
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
150
Featured
See All Featured
Fireside Chat
paigeccino
41
3.8k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
180
Unsuck your backbone
ammeep
671
58k
Faster Mobile Websites
deanohume
310
31k
A designer walks into a library…
pauljervisheath
210
24k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Why Our Code Smells
bkeepers
PRO
340
58k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Designing Experiences People Love
moore
143
24k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
31
Navigating Weather and Climate Data
rabernat
0
67
Side Projects
sachag
455
43k
Transcript
SINGLE STATE ATOM APPS
2 state = if
3 why don’t we put it right on the root?
THE IDEA 4 main <foo> <bar> <qux> state •State lives
on the root •Pass below only what matters •Components just render what it receives, no side-effects
5 BUT HOW DO WE UPDATE THE STATE?
REACT + CURSOR 6 or atom, or zipper
REACT + CURSOR 7 <List items={cursor.refine('items')} /> const List =
(props) => <ul> {props.items.map(ListItem)} </ul> const ListItem = (item) => <li> {item.refine('name').value} <NameInput name={item.refine('name')} /> </li> const NameInput = (props) => <input value={props.name.value} onChange={props.name.set} /> (not an actual implementation)
CLOJURESCRIPT + OM Single state atom 8
9 AWESOME DEMO https://youtu.be/5yHFTN-_mOo
10 TODOMVC EXAMPLE
REACT + REDUX 11 Reduce FTW R
WHAT IS A REDUCER? 12 const list = [1, 2,
3] list.reduce((accumulated, current) => { return accumulated + current }, 5) // 11
REDUX STRUCTURE 13 main <foo> <bar> <qux> state actions user
input reduce onChange
HOW REDUX WORKS 14 const state = { list: [{name:
"une"}, {name: "due"}] }; const actions = [{type: "ADD", name: "tre"}]; const reducer = (currentState, action) => { switch (action.type) { case "ADD": return { list: [...currentState.list, {name: action.name}) } default: return currentState; } } actions.reduce(reducer, state); /* { list: [{name: "une"}, {name: "due"}, {name: "tre"}] }; */
15 TODOMVC EXAMPLE
16 REDUX DEVTOOLS
ELM 17 The right way is the only way
18 EXAMPLE
ADVANTAGES 19 •Single source of truth •Deterministic state changes •Rationalise
about the rendered UI •State change timeline •Easier to debug •Hot reloading (example) •Fast rendering •Easier to implement optimistic updates •Easier to have an isomorphic app •Simple functions and data structures
20 WHY IS THIS HAPPENING ON FRONT-END?
21 EXAMPLES SOURCE CODE github.com/rogeriochaves/single-state-atom-apps
THANK YOU