2016-03-08 30 views
1

我的應用程序中有一些狀態來自服務器,並且不會改變(在用戶會話的生命週期中)。該狀態在HTML中引導。我應該在商店中存儲永不改變(自舉)數據嗎?

我應該將它作爲商店的一部分併入減速機嗎? const bootstrappedData = (state, action) => state

或者我應該公開一些像bootstrappedData.get('key')這樣的全球幫手嗎?

回答

2

有趣的是,我昨天剛剛在我自己的商店中發佈了關於數據的相同決定。我得出的結論是,我們只應將有狀態的數據存儲在Redux存儲中,即能夠維護狀態的數據或可能發生更改的數據。靜態數據根據定義沒有狀態,因此不需要像這樣跟蹤。

因此,我通常有一個/common/app-const.js文件,我在這裏存儲這些類型的靜態對象。例如,我在這裏存儲了Redux的DEFAULT_STATE,但也存儲了其他一些不會更改的對象(因此不會在Redux中進行跟蹤)。

現在,讓我們說其實我是想允許最終用戶操縱numRowsnumCols在UI,以及在這一點上我一定會需要把這些在終極版商店,但不是現在,因爲他們只是靜態的常量!

/common/app-const.js

export const DEFAULT_STATE = { 
    model: {}, 
    timer: { 
     isRunning: false, 
     ticks: 0 
    } 
}; 

export const GRID_DATA = { 
    numRows: 50, 
    numCols: 75, 
}; 

每當我需要這個靜態的數據,這是作爲一個導入一樣容易:

import { GRID_DATA } from '../common/app-const'; 
1

略與此相關的問題是異步(不是自舉),而是靜態數據,因此,存儲數據到存儲區域與存儲區域之外是有折衷的。


店內

的觀光

  • 容易看到和調試數據,而無需使用console.log
  • 查詢數據是通過選擇同步

缺點

  • 概念不準確的,因爲從定義靜態數據是無狀態的,而專賣店是爲了保持狀態

商店

PROS

缺點

  • ,因爲數據是異步,你就必須出口異步數據訪問API(與同步選擇)
  • 異步數據導致了狀態的組件(取在生命週期掛鉤的數據和狀態設置的數據,如)

我做了一個大型的生產應用了前一種方式,並且將多回想起來,已經完成了後者。

相關問題