MongoDB Schema Design Pattern - Approximation Pattern
用一句簡單的話說
Approximation Pattern 透過儲存不是必要精確的資料來幫助我們減少 db 資源的損耗
最近開始透過 https://learn.mongodb.com/ 摸 MongoDB,覺得官方提供的課程搭配 docs 看下來滿清楚明瞭的,挑了一些我比較有興趣的課順手把重點整理下來。
在轉職成功後到現在大約兩年半的時間,從一開始轉職前的不安,到現在專注在能以什麼方向去開拓自己職涯的視野,心境上一直在發生改變,而每當自己對於目前的方向迷惘的時候我很喜歡打開別人的部落格,看看是不是有人和我一樣正困擾這件事情並且是用什麼方向思考,舉一個最近讓我比較迷惘的事情是,在上一份工作因 SSR 需求有碰到一些比較偏 server 端的東西了,要不要就趁勢往全端去走,自己也滿有興趣的。
在讀完 Redux 後就很好奇 React-Redux 是如何搭配 Redux 觸發元件在呼叫 dispatch 後達到重新渲染的,去了解後發現目前版本是用一個 useSyncExternalStore hook 來實現,也就是本篇的主角,於是就突發奇想想用之前所學去寫一個非常陽春的 Redux store (當然要直接抓 Redux 下來用也OK,自己寫純粹是想練習)並搭配這個 hook 來做出類 React-Redux 的感覺(但當然 React-Redux 沒有這麼簡單),所以這篇會先介紹該 hook 基本的用法後,仿刻一個 Redux 當作外部的 store 寫一個簡單的例子。
在聊 applyMiddleware 前想先稍微提一下這個方法的脈絡,我當初直接看這個方法時整個是一頭霧水,在好好爬了一遍官方文件後才覺得有比較理解,而我認為先了解 enhancer 以及 middleware 會比較好瞭解這整個方法,但如果已經很熟悉的話可以直接跳到第三部分看原始碼。
這篇要來聊的是放在 store 裡面的第一個參數combineReducers,在探究程式碼之前想先聊一下,其實 combineReducers 並不是必須使用的。
這邊要介紹的 createStore 是整個 Redux 的核心,包含了你所需要的全局狀態以及大部分的 API,在理解時可以打開 github 程式碼跟著閱讀,我會在本篇以及往後的說明把 ts 轉換成 js 程式碼以方便閱讀。