本人工作環境是在公司現有react架構下開發前端頁面,讓使用著可以使用頁面上各種工具與Threejs 3D場景互動。
為了讓組件與功能程式分的更清楚以更好維護,會將程式分成頁面組件與功能程式兩類。(上圖紅色區域為功能程式,綠色區域為頁面組件區域)
組件的setState一般情況又只能傳給自己的子組件,不能傳給外部,但功能程式很常需要更新頁面組件。
例如App組件頁面顯示DetectClickPoint類別物件的滑鼠點擊坐標,但DetectClickPoint改變坐標後,App組件不會主動刷新顯示。
為了讓程式更靈活,於是將重要的react setState曝露出來,讓全局呼叫使用。
例如上面的例子App組件有新增forceRerender方法,可以把forceRerender曝露出來,讓每個地方都能刷新App組件。
再稍微規劃一下,把曝露的react setState都整理到一個ViewRerender.js內,就能方便靈活地在任何地方修改各種組件狀態了。
分享此做法原因在於快速方便且靈活,尚未考慮效能等影響,還請大家多多指點。