【问题标题】:Exception from Tracker recompute function, RangeError: Invalid time value | react, meteor,Tracker 重新计算函数异常,RangeError:无效时间值 |反应,流星,
【发布时间】:2022-12-09 08:20:46
【问题描述】:
我收到一条错误消息 Exception from Tracker recompute function 和 RangeError: Invalid time value。
问题是有时 card 得到 undefined 因为它是未定义的,我不能运行这个:const dateFormat = isThisYear(createdAt) ? "MMM d" : "MMM d, yyyy";
有没有办法只在卡片有价值时才执行dateFormat?
import React from "react";
import Child from "./Child";
import { format, isThisYear } from "date-fns";
const Sample = ({ card }) => {
const { createdAt, title } = card || {};
const dateFormat = isThisYear(createdAt) ? "MMM d" : "MMM d, yyyy";
const createdDate = format(createdAt, dateFormat);
return (
<>
<Child createdDate={createdDate} />
</>
);
};
export default Sample;
【问题讨论】:
标签:
reactjs
meteor
date-fns
【解决方案1】:
这不一定是一个 Meteor.js 问题,但更像是一个普通的 javascript 问题,您应该在返回变量之前检查变量的真实性。 createdAt 和(或)title 在这种情况下。
我可能会按照以下方式处理您的情况。
import React from "react";
import Child from "./Child";
import { format, isThisYear } from "date-fns";
const Sample = ({ card }) => {
const { createdAt, title } = card || {};
if (createdAt) {
const dateFormat = isThisYear(createdAt) ? "MMM d" : "MMM d, yyyy";
const createdDate = format(createdAt, dateFormat);
}
if (createdDate) {
return (
<>
<Child createdDate={createdDate} />
</>
);
} else {
return (
<>
<Child createdDate={} />
</>
);
}
};
export default Sample;