首页 > 解决方案 > 如何检测 RangePicker 的开始和结束日期的 onChange 事件?

问题描述

我的应用程序上有一个标准的 antd RangePicker:

<RangePicker
  format="DD-MM-YYYY"
  onOpenChange={onOpenChange}
  disabled={loading}
  defaultValue={dateDefaultValue}
  onCalendarChange={onCalendarChange}
/>

根据他们的文档,从 4.4.0 版本开始有一个 info 参数,我使用的是 4.10.3 版本。

  const onCalendarChange = (dates, dateStrings, info) => {
    console.log(dates);
    console.log(dateStrings);
    console.log(info);
    if (dates?.length) {
      setStartDate(dates[0]);
      setEndDate(dates[1]);
    }
  };

问题是:信息总是未定义的(似乎文档关于版本是错误的)。每次在 RangePicker 上触发 onChange 或 onCalendarChange 事件时,我都会得到两个日期,并且我想分别检测这些事件,以便我可以明确知道开始日期何时更改或结束日期何时更改。如果没有 onStartDateChange,我该如何实现?

标签: reactjsantd

解决方案


好吧,好像你已经在你的州保存日期了。您可以做的是将 onCalendarChange 函数的日期与您所在州保存的日期进行比较。这样你就知道哪个变了。


PS:我认为它是这样工作的,因为您似乎可以在同一个更改中同时更改开始日期和结束日期?


推荐阅读