克隆并与 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()
),相反,您应该查看 _d
( moment 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
,而不是一些未绑定到小部件的局部变量。
我有以下代码:
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()
),相反,您应该查看_d
( moment 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
,而不是一些未绑定到小部件的局部变量。