簡體   English   中英

Airbnb 反應日期返回 null

[英]Airbnb react-dates returns null

這是我實現的代碼

<DayPickerRangeController
                startDate={startDate}
                startDateId="startDateId"
                endDate={endDate}
                endDateId="endDateId"
                onDatesChange={(date) => console.log(date)}
                focusedInput={focus}
                onFocusChange={(focus) => console.log(focus)}
              />

但是 onDatesChange 返回 null

{startDate: null, endDate: null}

這是我的鈎子

const [dateRange, setDateRange] = useState({
    startDate: null,
    endDate: null,
  });
  const [focus, setFocus] = useState(null);

const { startDate, endDate } = dateRange;

任何想法為什么?

這些是我的進口

import 'react-dates/initialize';
import { DayPickerRangeController } from 'react-dates';

這是完整的代碼


import 'react-dates/initialize';
import { DayPickerRangeController } from 'react-dates';

const DatePicker = ({ name, items, handler }) => {

  const [dateRange, setDateRange] = useState({
    startDate: null,
    endDate: null,
  });

  const [focus, setFocus] = useState(null);
  const { startDate, endDate } = dateRange;

  return (
    <DayPickerRangeController
       startDate={startDate}
       startDateId="startDateId"
       endDate={endDate}
       endDateId="endDateId"
       onDatesChange={(date) => console.log(date)}
       focusedInput={focus}
       onFocusChange={(focus) => console.log(focus)}
    />
  )
}


我已經在 codeandbox 中對其進行了測試,一旦focus變量最終為空,似乎onFocusChange就不會被觸發。

使用常量,如 react-dates 文檔中所述,而不是null

const [focus, setFocus] = useState(START_DATE);
...
focusedInput={this.state.focusedInput} // PropTypes.oneOf([START_DATE, END_DATE]) or null,

可以輕松導入START_DATE, END_DATE常量:

import { START_DATE, END_DATE } from 'react-dates/constants';

Ps:當您選擇完范圍后, focus變量將再次被賦予null值。 為了再次選擇值,我想最好重置所有值( focusstartDateendDate

更新:

我在這里檢查了它們的實現。 這很簡單:

onFocusChange={(f) => {
        setFocus(!f ? START_DATE : f);
       }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM