GraphQL Apollo 取代Redux

52 回覆
0 Like 0 Dislike
2018-10-22 16:42:08
難main咪慢慢做
2018-10-22 17:52:47
Context都做到state management
2018-10-22 19:51:42
係呀,redux 作者入左react team之後,built-in context api同state management加埋越來越似redux
2018-10-23 06:47:07
Redux作者老早就入左react team, 拖到依家先出點可以歸功畀佢
2018-10-23 09:14:38
始終 react team 個目標係async rendering, 唔係state management
如果Facebook下下都加入breaking change, 就會好似Angular 1 vs Angular 2咁,冇人用
2018-10-23 09:58:07
AngularJS轉Angular係大勢所趨
React無經歷ES5轉ES2015大環境改變係唔會明
2018-10-23 14:56:02
React Initial release date: May 29, 2013
2018-10-24 14:54:40
😂
2018-10-24 23:42:38
難道你以為ES2015在2015沒有嗎....
class Clock extends React.Component

React從一開始就用babel配ES6 syntax
2018-10-24 23:43:16
始終 react team 個目標係async rendering, 唔係state management
如果Facebook下下都加入breaking change, 就會好似Angular 1 vs Angular 2咁,冇人用
AngularJS轉Angular係大勢所趨
React無經歷ES5轉ES2015大環境改變係唔會明
React Initial release date: May 29, 2013
難道你以為ES2015在2015沒有嗎....
class Clock extends React.Component

React從一開始就用babel配ES6 syntax
2018-10-25 00:54:04
syntax好似quote錯, 唔理了
2018-10-26 17:02:25
整一個eshop 也夠用?
2018-11-10 11:23:23
兩回事

寫過 MobX 唔會返轉頭寫 Redux

Redux 需要完整設計先會寫得好,如果一開始 Requirement 唔清晰,仲要有心理準備不斷剷底 Refactor 先可以做得出易 Main 嘅 Redux。

但事實上 javascript weak type 已經好難 Refactor,旁觀者更難 Trace,而 Requirement 唔清晰更加家常便飯。

好多時 Developer 只係需要 Reactivity 做 State management 而唔係 Declarative 咁 Define 哂所有 scenario
2018-11-10 11:34:22
Redux 個概念其實係好,只係放落 javascript 度好難發揮得好,加上太多新手根本冇 Design 過(直頭連 Redux 係都未知)就求其加上去撩爛哂啲野或者 Couple 哂啲 Components

如果用 Static type 嘅 Language 去寫,有 Enum Type Carry 啲 Data 兼 Case by case 咁寫,有 Compiler check Enum usgae exhaustiveness,成件事會靚好多同易 Trace 好多
2018-11-10 14:51:36

X is difficult to debug
X is empty dogma, let’s try Y
Y is how we do things



Y is annoying to write
Y is cargo cult, let’s try X
X is how we do things



X is difficult to debug 🤔
https://twitter.com/dan_abramov/status/1016783114381639680?s=09
2018-11-11 01:07:31
獨立思考加練手再反思嘅重要性

Dan 講嘅野不嬲都離離哋地 一黎佢係作者,二黎佢接近所有 Context 都係用理想世界,而要係香港籌集實踐Redux 理想世界嘅力氣係同一條 Team 係接近零

1. 要有足夠時間比你設計 State Management
2. 要全 Team 人都係高手,唔好搞彎個 Architecture
3. 要唔可以懶,Declaratively 寫哂所有 State,什麼 { ...state, key: overrideValue } 全禁
4. 要寫足所有 Test case 去 Validate state transition

100% 信足佢講嘅野只會令 Developer 路上走得更辛苦

Code quality 固然重要,但 Time to market 亦非常重要。
2018-11-11 03:55:00
條友係指出,冇野係完美,永遠都有取捨
1. 根本冇呢回事,作者有講過唔好亂用redux,好多野應該係先諗 local state
https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367
2. Code review 係基本野黎 而且咁諗唔現實,當初啲人設計 SDLC 唔係淨係 code and fix,需要Work breakdown structure,需要唔同專長嘅人互相幫助
3. Twitter 入面已經講緊 immer 係一個 easy to write alternative
4. 用mobx,react set state 一樣需要 unit test,寫幾多 unit test 係同 redux 冇關係

個人黎講,redux太多垃圾library變得好出名,搞到人人以為一定要用redux,例如react-router-redux,redux-form
form 同 URL 天生就係 local state,夾硬放入 Redux 根本冇咩好處
2018-11-11 13:01:09
當然有睇過 Dan 嘅 Twitter 先話佢離地,Redux 被人濫用亦十分常見,啲人甚至要完全依賴 Redux debugging tool 先生存到,啲 Code 寫哂係度但搵唔到個 Bug係邊,要花時間 Click Click Click 個 debugging tool 先搵到問題所有。

睇 Code 搵唔到 Bug 有好多原因,一黎可以係自己寫得差設計得唔好,二黎係真係冇咁多 Resource Declaratively 寫足啲 Scenario,三黎可以係個人本身個腦唔夠多 RAM 之類。但你諗深一層,如果有一個 Senior 幫新手 Code Review 佢一樣會 Trace 唔到而睇漏眼,變相 Code Review 變咗 Check structures Check architecture Check Syntax 而唔會睇下 State management 正唔正確,咁絕對唔係一件好事。

另外 UI/UX 係 Product 層面上一定會經常轉,如果改個幾版UI ,你個 State 要重寫咁制係因為 Redux 比唔到 Flexibility 你,咁証明 Redux 唔太啱用,呢個係鐵一般嘅事實;Redux 唔啱用亦唔代表 MobX 會啱用,我想指出嘅係啱唔啱用其實好客觀,唔係好似 Dan 咁主觀只有「用或者唔用」,單純指出 Redux 未必需要用,可以自己手撩 Local State 簡直離地到癲,佢根本冇諗過點樣可以更 Efficient 及有系統地撩 Local State。

唔知你有冇用過 MobX,MobX 個 scope 可以好細,甚至可以用 MobX 取代手撩 Local State,比起自己手撩有更多功能提供比你用。 如果你有寫過 Vue,你會明白係 Vue 相對 React 下撩 Local State 有幾方便,MobX 亦係參考 Vue 個做法整出黎。順帶一提係 Vue 嘅世界,大約只需要有 5-10% Coding 需要用到 Vuex (類似 Redux 嘅野)多數係 Global State 先會用,大部份情況 Vue 提供撩 Local State 嘅方法已經 足夠 Manage 得到。

我係兩邊都用過一段長時間先會咁 Comment ,MobX 個概念清𥇦,Doc 都算易睇,與其花時間搵 Dan 啲 Tweet 去証明某啲野,不如即刻試下

Redux 同 MobX 係兩樣完全唔同嘅 State Management 風各,兩邊都好值得學習
2018-11-14 17:19:43
依個啱
2018-11-14 17:22:29
如果有好嘅server side framework,relay個人覺得好用過apollo

利申:Facebook Software Engineer
2018-11-16 09:22:06
Relay 就係Facebook 內部用😂,然後先 open source 出來。反而我想知內部的 Relay同 Open source的 Relay 有咩差異?
2018-11-16 09:29:25
其實冇咩,主要係有啲wrapper wrap咗啲graphql environment variables,用起上嚟再方便小小

但係graphql server冇open source,但係其實做得okay好,integrate relay唔會有問題

我唔係好知出邊有冇咩server side framework真係好
2018-11-18 12:56:08
我用緊成套apollo client/server
其實我唔明唔同server有咩唔同
咪又係resolvers
2018-11-18 12:59:49
用啲design pattern可以簡化啲,唔洗自己manage個resolver mapping
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞