跳到主要内容

moment的一点小坑

今天遇到一个很诡异的bug,因为之前不是我写的,然后就查了查,在这里总结一下。

有一个需求是可以按照月和周来展示数据,所以就用moment处理了一下,然后我就发现了一个诡异的bug,就是每次切换月和周的时候就回出现问题,通过debug发现每次moment().startOf和moment().endOf的时候会把源数据改了,我就考虑到这个方法是不是会修改源数据,因为我本身没有操作moment对象,所以肯定不是我改掉的,查了moment文档发现这个方法确实会修改源数据,如果想要不修改源源数据需要手动clone一下:

const [date, setDate] = useState<moment.Moment>(moment())
const selfDate = date.clone();
const startDate = selfDate.startOf('week').format('YYYY-MM-DD');
const endDate = selfDate.endOf('week').format('YYYY-MM-DD');

所以这个方法其实不太好,他会修改源数据,最好就是不修改源数据,返回一个新的moment对象。

Loading Comments...