我得到一个错误说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;
这并不一定是一个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;