Javascript 如何/在何处转换redux应用程序中服务器的日期?

Javascript 如何/在何处转换redux应用程序中服务器的日期?,javascript,redux,normalizr,reselect,Javascript,Redux,Normalizr,Reselect,我现在开始学习redux。我使用真实的word示例作为起点,使用normalizer和reselect来处理数据 现在,我需要了解将来自服务器的日期转换为js日期对象的最佳位置。由于normalizer已经处理了“一些模式”,我认为它也可以做到这一点,但我没有在那里找到它 我应该在哪里转换这些日期?我的假设是,我必须在商店中保留那些已经转换的日期。是这样吗 我向callApi(api中间件内部)添加了第三个参数: 现在我可以这样称呼它: return { [CALL_API]: {

我现在开始学习redux。我使用真实的word示例作为起点,使用normalizer和reselect来处理数据

现在,我需要了解将来自服务器的日期转换为js日期对象的最佳位置。由于normalizer已经处理了“一些模式”,我认为它也可以做到这一点,但我没有在那里找到它


我应该在哪里转换这些日期?我的假设是,我必须在商店中保留那些已经转换的日期。是这样吗

我向callApi(api中间件内部)添加了第三个参数:

现在我可以这样称呼它:

return {
    [CALL_API]: {
        types: [ TIMESLOTS_REQUEST, TIMESLOTS_SUCCESS, TIMESLOTS_FAILURE ],
        endpoint: `conference/${conferenceId}/timeslots`,
        schema: Schemas.TIMESLOT_ARRAY,
        conversionFromServer: (data) => {
            data.timeslots.forEach((t)=>{
                t.startTime=php2js.date(t.startTime)
                t.endTime=php2js.date(t.endTime)
            });
            return data;
        }
    }
}

通过这种方式,我尽可能使转换“尽可能靠近服务器”

normalizer可以做到这一点-在当前版本(v3.3.0)中,您可以这样实现:

import { schema } from 'normalizr';

const ReleaseSchema = new schema.Entity('releases', {}, {
  processStrategy: (obj, parent, key) => {
    return {
      ...obj,
      createdAt: new Date(obj.createdAt),
      updatedAt: new Date(obj.updatedAt),
    };
  },
});

你不必这样做,如果你愿意,你也可以在你的表现成分中进行转换。当然可以。但这将“耦合”视图层和服务器格式。我认为尽快转换它是一种更好的做法,这样,如果我以后更改服务器,视图将继续工作。在我看来,这是“较低”层的责任。我将粘贴我的解决方案作为答案。
import { schema } from 'normalizr';

const ReleaseSchema = new schema.Entity('releases', {}, {
  processStrategy: (obj, parent, key) => {
    return {
      ...obj,
      createdAt: new Date(obj.createdAt),
      updatedAt: new Date(obj.updatedAt),
    };
  },
});