[英]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
值。 為了再次選擇值,我想最好重置所有值( focus
、 startDate
和endDate
)
更新:
我在這里檢查了它們的實現。 這很簡單:
onFocusChange={(f) => {
setFocus(!f ? START_DATE : f);
}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.