Submit Search
Upload
redux-observable with react-apollo
•
0 likes
•
93 views
Tripmoment
Follow
integrate redux-observable and react-apollo
Read less
Read more
Software
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 27
Download now
Download to read offline
Recommended
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Jimmy Ho
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
Justin Lin
前端爆肝之旅+React上山前的小專案心得分享
前端爆肝之旅+React上山前的小專案心得分享
Yao Nien Chung
Underscore
Underscore
cazhfe
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Justin Lin
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
Chieh Kai Yang
Spring mvc
Spring mvc
pepsixp
CRUD 綜合運用
CRUD 綜合運用
Shengyou Fan
Recommended
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Jimmy Ho
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
Justin Lin
前端爆肝之旅+React上山前的小專案心得分享
前端爆肝之旅+React上山前的小專案心得分享
Yao Nien Chung
Underscore
Underscore
cazhfe
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Justin Lin
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
Chieh Kai Yang
Spring mvc
Spring mvc
pepsixp
CRUD 綜合運用
CRUD 綜合運用
Shengyou Fan
Asp.net core v1.0
Asp.net core v1.0
chang kuo-chao
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
Frontend Devops at Cloudinsight
Frontend Devops at Cloudinsight
Yan Wang
CRUD 綜合運用
CRUD 綜合運用
Shengyou Fan
Oozie in Practice - Big Data Workflow Scheduler - Oozie Case Study
Oozie in Practice - Big Data Workflow Scheduler - Oozie Case Study
FX Live Group
整合 Open ID
整合 Open ID
Shengyou Fan
Migrations 與 Schema 操作
Migrations 與 Schema 操作
Shengyou Fan
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
Joseph Chiang
宅學習 Firebase
宅學習 Firebase
Wei chung chai
Model & Seeding整合
Model & Seeding整合
Shengyou Fan
React + mobx分享(黄英杰)
React + mobx分享(黄英杰)
kkxx1254
Redux+react js
Redux+react js
國昭 張
Gwt rpc
Gwt rpc
Roy Chen
W3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in React
美团点评技术团队
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
How to ASP.NET MVC4
How to ASP.NET MVC4
Daniel Chou
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
Jackson Tian
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
Jackson Tian
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC
More Related Content
What's hot
Asp.net core v1.0
Asp.net core v1.0
chang kuo-chao
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
Frontend Devops at Cloudinsight
Frontend Devops at Cloudinsight
Yan Wang
CRUD 綜合運用
CRUD 綜合運用
Shengyou Fan
Oozie in Practice - Big Data Workflow Scheduler - Oozie Case Study
Oozie in Practice - Big Data Workflow Scheduler - Oozie Case Study
FX Live Group
整合 Open ID
整合 Open ID
Shengyou Fan
Migrations 與 Schema 操作
Migrations 與 Schema 操作
Shengyou Fan
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
Joseph Chiang
宅學習 Firebase
宅學習 Firebase
Wei chung chai
Model & Seeding整合
Model & Seeding整合
Shengyou Fan
React + mobx分享(黄英杰)
React + mobx分享(黄英杰)
kkxx1254
What's hot
(12)
Asp.net core v1.0
Asp.net core v1.0
Ch09 整合資料庫
Ch09 整合資料庫
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Frontend Devops at Cloudinsight
Frontend Devops at Cloudinsight
CRUD 綜合運用
CRUD 綜合運用
Oozie in Practice - Big Data Workflow Scheduler - Oozie Case Study
Oozie in Practice - Big Data Workflow Scheduler - Oozie Case Study
整合 Open ID
整合 Open ID
Migrations 與 Schema 操作
Migrations 與 Schema 操作
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
宅學習 Firebase
宅學習 Firebase
Model & Seeding整合
Model & Seeding整合
React + mobx分享(黄英杰)
React + mobx分享(黄英杰)
Similar to redux-observable with react-apollo
Redux+react js
Redux+react js
國昭 張
Gwt rpc
Gwt rpc
Roy Chen
W3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in React
美团点评技术团队
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
How to ASP.NET MVC4
How to ASP.NET MVC4
Daniel Chou
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
Jackson Tian
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
Jackson Tian
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC
Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛
Wen-Tien Chang
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
JSX is NOT HTML
JSX is NOT HTML
柏軒 鄒
關於 Javascript 非同步的那些事兒 公開版
關於 Javascript 非同步的那些事兒 公開版
Kirk Chen
Hello reactJS 0~1 Bulid my first web app
Hello reactJS 0~1 Bulid my first web app
hungjie19
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
Wade Huang
Javascript primer plus
Javascript primer plus
Dongxu Yao
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用
Jerry Lin
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
Angel Boy
Similar to redux-observable with react-apollo
(20)
Redux+react js
Redux+react js
Gwt rpc
Gwt rpc
W3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in React
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
How to ASP.NET MVC4
How to ASP.NET MVC4
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸
Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
JSX is NOT HTML
JSX is NOT HTML
關於 Javascript 非同步的那些事兒 公開版
關於 Javascript 非同步的那些事兒 公開版
Hello reactJS 0~1 Bulid my first web app
Hello reactJS 0~1 Bulid my first web app
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
Javascript primer plus
Javascript primer plus
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
redux-observable with react-apollo
1.
🤔 redux-observable v.s react-apollo
2.
解決的問題 😍 • graphql(gql`yourquery`, options)(Component) •
⼤大幅簡化 data fetch 的邏輯 • 可以在 graphql HOC 定義各種奇技淫巧的操作 • ⾃自動 Observable
3.
遇到的問題 💩 • component 必須要知道
data 的形狀狀,跟 query 的 schema ⾼高度耦合, 實際上有點 container 的感覺 • 並不是每個 query 都是在 componentDidMount 就要送出去。 • 仍然會遇到 data 需要在不同層級取⽤用的問題。 • error handling。{props.error && <ErrorBlock error={props.error} />}
4.
react-apollo 2 🤔 • 可以取⽤用
<Query />, <Mutation /> component 代替 HOC • render props 有更更多彈性
5.
折衷⽅方案 😉 • 單純 query
⾴頁⾯面⽤用 react-apollo HOC • 比較複雜的⾴頁⾯面搭配 redux-observable epic 操作 • 加入 apollo-link-http 作 request 的預處理理
6.
containers/trivia-billing/SigningList/epics.js
7.
containers/trivia-billing/PaymentList/index.js
8.
containers/trivia-billing/AlertMessage/index.js
9.
原本以為這樣應該可⾏行行 😄 • 透過 epic
來來管理理複雜的非同步操作 • 透過 middleware 統⼀一處理理 error, logger, notification 等
10.
實際⽤用起來來好像也不錯 😊
11.
但...天不從⼈人願 🙁
12.
開始遇到⼀一些難解的問題... 🤢 • ☹簡單的 query
都必須 serialize 為 action,真的很⿇麻煩 • ☹如果是 mutate 操作,少了了 ObservableQuery 的幫助,必須送 action ⾃自⼰己 diff 更更新。 • ☹graphql 與 redux-observable 交錯,不知道怎麼整合比較優雅 • 要⾃自⼰己控管 loading state
13.
Pagination 🤔
14.
WTF? 🤔
15.
Optimistic UI 🤔 updateComment =
({ id, content }) => mutate({ variables: { id, content }, optimisticResponse: { __typename: “Mutation”, updateComment: { id, content, __typename: “comment” } } })
16.
Subscription, poll 等等 🤔
17.
思考 1 🌝 • redux
與 apollo 適合共存嗎? • 怎樣的情況下要採⽤用哪個解決⽅方案比較好 • apollo 社群逐漸壯⼤大,功能也⽇日漸豐富 • redux 舒適圈 • 各種花式⽅方案 apollo-link-http apollo-link-state apollo-inmemory-cache • apollo-final-solution
18.
各種情境思考 😶 • 讀操作頻繁,寫入操作少(報表等純 read
⽤用的 data) • 讀操作少,寫入頻繁(批次操作) • 讀寫皆頻繁(出帳系統、BD 系統等)
19.
Observable Query 👀 • 優點:可以優雅解決批次操作的問題,省下不少功 •
缺點:擺脫了了 redux 的控制
20.
21.
22.
23.
Demo - • client.watchQuery(query) • client.mutate •
graphql(query) client.mutate({ mutation: gql` mutation mutatePerson { mutatePerson(input: { name: "eason", age: 150 }) { id name age } } `, }).then(console.log) obs$ = client.watchQuery({ query: gql` query getPeople { people { id name age } } ` })
24.
如果⽤用 redux… 🤔
25.
思考⼀一下 🤔 • 為什什麼 react-apollo
使⽤用 HOC? • 使⽤用 redux 的限制?
26.
結論 ⚖ • 銀彈是不存在的 • 如果開發時間允許,再多想幾分鐘 •
redux 與 apollo 有各⾃自適合的場景 • 不要後悔悔
27.
天⾺馬⾏行行空 🤔 • 😜透過 redux
middleware 機制來來監聽 query • 👹強化 epic,加入類似 .ofGraphql 之類的機制 • 🙂利利⽤用 react16 的 Provider, Consumer 機制,將 graphql HOC 包裝後 的 component 當作 provider 使⽤用
Download now