2017-09-25 56 views
0

典型情況:我通過http獲取數據並將它們存儲到ngrx/store中。但數據包含字符串而不是JS Date對象。我應該在哪裏轉換它們?將字符串轉換爲日期的位置?

  1. 在服務this.http(...).map(convert).subscribe(store.dispatch(new AddAction))
  2. 在店內case add: convert(payload); return state
  3. 還是在行動的減速機:

    export class AddMany implements Action { 
        readonly type = addMany 
    
        constructor(public payload: FinishedCall[]) { 
         this.payload = this.convertData(payload) 
        } 
    } 
    

我想我應該做的服務,但我怕獲得非常大的服務文件

+0

這取決於你和業務對象的設計。如果您更喜歡在打字稿代碼中始終使用JS Date類型,則儘可能早地將其轉換爲JS Date並儘可能從JS Date轉換爲字符串(如果也是必要的話)。創建一些輔助方法來進行轉換(如有必要),並在決定實現此目的的任何地方重新使用這些方法。 – Igor

+0

我寧願儘快將日期轉換爲日期 – x1site

+0

好的,那麼你就知道你的問題的答案。 – Igor

回答

0

我建議在減速器內完成轉換功能。

減速器應該是無副作用的。這意味着他們不應該修改他們自己範圍之外的事情。他們應該簡單地計算下一個應用程序狀態作爲reducer參數的純函數。

我們可以在這裏看到我們正在傳遞一個初始狀態(當前數字)和一個Action。爲了處理每個動作,常用的方法是使用switch語句。每個Reducer不需要顯式訂閱調度器,而是每個Reducer都被傳遞給每個Reducer,它處理它感興趣的操作,然後將新狀態返回到下一個Reducer。

希望它有幫助