2017-09-25 52 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。

希望它有帮助