克隆并与 DateTimePicker 一起使用时,Moment 对象不会增加天数

Moment object won't increment by days when cloned and used with DateTimePicker

我有以下代码:

  function localDateHandler(momentObj) {


      let start = momentObj.clone();
      let update = start.add(10, 'days');

      console.log(update);    // Does not change, SHOULD be ten days more than momentObj
      console.log(momentObj);

}

我正在使用以下 React 组件更改日期:

 <DateTimePicker value={eventDate} onChange={localDateHandler}/> 

组件的信息在这里:https://material-ui-pickers.dev/

当我更改日期时,日期不会增加第一个代码块中列出的天数(我在评论中解释更多)

谢谢!

我重现了,没有任何问题。您所看到的可能是由以下情况之一引起的:

  • 您可能已经简单地查看了 moment 对象的 _i,这可能是初始对象(可能派生自 momentObj.clone()),相反,您应该查看 _dmoment object internal properties doc)

    The most commonly viewed internal property is the _d property that holds the JavaScript Date that Moment wrappers.

  • 您可能没有为 moment 适配器使用正确版本的对等依赖项 (installation guide)

    Important: For material-ui-pickers v3 use v1.x version of @date-io adapters.

Codesandbox演示,请打开日志查看

JS 代码正常工作(评论显然是错误的):

function localDateHandler(momentObj) {

      let start = momentObj.clone();
      let update = start.add(10, 'days');

      console.log(update);    // Does not change, SHOULD be ten days more than momentObj
      console.log(momentObj);

}

localDateHandler(moment());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>

我的收益:

"2020-08-24T22:29:35.347Z"
"2020-08-14T22:29:35.347Z"

我猜渲染有问题?然后我怀疑你必须修改 localDateHandler 中的某处 eventDate,而不是一些未绑定到小部件的局部变量。