我有一个吸气剂,它返回对象数组。问题在于我需要在不同的组件中使用过去和实际的警告。
它仅返回实际警告并忽略过去。但是,当我删除map方法时,它可以正常工作。
P.S我试图将此吸气剂分成两个吸气剂
getPastOrActualWarnings: state => type => {
const now = +new Date()
let warnings
if (type === 'actual') {
warnings = state.warnings.filter(item => item.time * UNIX_TIMESTAMP > now)
} else if (type === 'past') {
warnings = state.warnings.filter(item => item.time * UNIX_TIMESTAMP < now)
} else {
warnings = []
}
return warnings.map(dateToString)
}
function dateToString (item) {
item.time = new Date(item.time * UNIX_TIMESTAMP).toLocaleDateString('ru-RU', DATE_OPTIONS)
return item
}
答案 0 :(得分:0)
问题是您正在直接使用getter修改状态,这是您绝对不应该做的事情。以下行修改了item.time
,您之前曾用它对项目进行排序。 item
是对状态中存储的对象的引用。
item.time = new Date(item.time * UNIX_TIMESTAMP).toLocaleDateString('ru-RU', DATE_OPTIONS)
要解决此问题,您可以执行以下两项操作之一:
使用其他名称作为渲染时间
item.renderedTime = new Date(item.time * UNIX_TIMESTAMP).toLocaleDateString('ru-RU', DATE_OPTIONS)
(浅)复制该项目,以便您修改本地副本,而不是处于状态的副本
function dateToString(item) {
const localItem = { ...item };
localItem.time = new Date(item.time * UNIX_TIMESTAMP).toLocaleDateString(
"ru-RU"
);
return localItem;
}