Soft_Job 板


LINE

※ 引述《FrAnKw (hard to believe)》之銘言: : 不過基本上Redux的時代已經過去了 現在我們新的案子已經完全使用hooks : 而且管理global state的方式也找到更好的solution : 推 errorsyntax: 推,也想了解 redux 的替代方案 09/01 13:15 很榮幸這篇文起到拋磚引玉的效果 有版友也在推文下面討論Angular的內容 挺好的! 關於Redux替代的部分 我們公司目前是使用Apollo Client 他是一套GrpahQL的解決方案 要搭配GraphQL的後端來使用 但其實若您目前專案是使用RESTFul也不是不行使用 因為Apollo有一套package可以把Rest api轉成GraphQL的 https://www.apollographql.com/docs/link/links/rest/ 只是這種偏底層打地基的東西可能要在案子一開始跑時就要先訂好了 或許下一個案子可以參考看看 至於實作方法 因為Apollo Client裡面有cache的機制 他可以用writeData這個方法 來複寫由query要進來的資料 或者使用writeQuery這個方法 來無中生有建立一個由client產生的query object 結合以上 使用情境上就可以做到 create/update 都可以共用同一組資料結構 而改動的狀態 會被直接記在cache裡面 https://www.apollographql.com/docs/react/advanced/caching/ 只要用的GraphQL查詢是一樣的名字(盡量不要使用匿名查詢) 那你在cache裡面拿到的就會是被保存下來的state 不過要注意的地方是 Apollo Server每一個object的結構都會預設帶一個基礎的property叫做__typename 從後端要來的資料都會預設自動帶上這個欄位 要共用結構的話 在writeQuery時要把這個prop補上 不然它會報錯 並且不能寫入 目前我是做了一個遞迴的方式在資料建立時自動補 或許之後研究一下Apollo Server可以不傳這個__typename的話 應該連補都不用了 我的實作方式是把useQuery這個hook做了一個包裹 包含了useQuery原先已有的東西之外 再把writeData/writeQuery上述所講的東西 實作完後一起暴露出來 用過的同事都說好爽好棒棒 可以少寫很多code 公司同事也有使用這個套件 https://github.com/apollographql/apollo-cache-persist 用來存放一些偏靜態的資料 另外一些公用的組件 例如modal, breadcrumb之類的東西 我們會使用HOC 然後這些小玩意會有自己的內部狀態或是使用Context 其實多去研究一下Redux的原理就可以發現 它的實作原理就是透過HOC加上context做出來的 這些共用小元件基本上方法也是類似Redux 只是他的影響範圍只限於他自己本身而已 大概是這樣子 歡迎提問討論 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.91.72 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1567336936.A.B28.html ※ 編輯: FrAnKw (220.133.91.72 臺灣), 09/01/2019 19:28:14
1F:推 illl: 請問是因為要offline use才用grapgql管locla state嗎? 如 09/01 19:36
2F:→ illl: 果local state跟graphql拿到的資料不相關感覺還是用redux或 09/01 19:36
3F:→ illl: context比較簡單? 09/01 19:36
4F:→ FrAnKw: 會用graphql管local state是因為這樣component端就不用轉 09/01 20:03
5F:→ FrAnKw: 內部狀態了 個人覺得這樣比較方便簡潔 09/01 20:04
6F:→ FrAnKw: 至於你說的第二點也沒錯 可以使用別的方式儲存 09/01 20:04
7F:→ FrAnKw: 或者GraphQL的writeQuery也可以自定義結構 就跟api結構 09/01 20:05
8F:→ FrAnKw: 無關了 09/01 20:05
9F:推 iDeepLearn56: 謝謝分享 09/01 20:07
10F:推 dreamnook: 最近公司也想搞graphql 謝分享 09/01 20:32







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP