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