首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Airbnb react日期返回null

Airbnb react日期返回null
EN

Stack Overflow用户
提问于 2020-03-24 12:33:41
回答 1查看 557关注 0票数 3

这是我实现的代码

代码语言:javascript
复制
<DayPickerRangeController
                startDate={startDate}
                startDateId="startDateId"
                endDate={endDate}
                endDateId="endDateId"
                onDatesChange={(date) => console.log(date)}
                focusedInput={focus}
                onFocusChange={(focus) => console.log(focus)}
              />

但是onDatesChange返回null

代码语言:javascript
复制
{startDate: null, endDate: null}

这是我的钩子

代码语言:javascript
复制
const [dateRange, setDateRange] = useState({
    startDate: null,
    endDate: null,
  });
  const [focus, setFocus] = useState(null);

const { startDate, endDate } = dateRange;

知道为什么吗?

这些是我的进口品

代码语言:javascript
复制
import 'react-dates/initialize';
import { DayPickerRangeController } from 'react-dates';

这是完整的代码

代码语言:javascript
复制
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)}
    />
  )
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-24 13:32:39

我已经在codesandbox中测试过它,并且似乎在onFocusChange变量结束为null后不会触发focus

使用常量,如react dates 文档中描述的那样,而不是使用null.

代码语言:javascript
复制
const [focus, setFocus] = useState(START_DATE);
...
focusedInput={this.state.focusedInput} // PropTypes.oneOf([START_DATE, END_DATE]) or null,

START_DATE, END_DATE常量可以很容易地导入:

代码语言:javascript
复制
import { START_DATE, END_DATE } from 'react-dates/constants';

Ps:当您选择范围时,focus变量将再次被赋予null值。为了再次选择值,我想最好重新设置所有的值(focusstartDateendDate)。

更新:

我检查了它们的实现这里。很直截了当:

代码语言:javascript
复制
onFocusChange={(f) => {
        setFocus(!f ? START_DATE : f);
       }}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60831149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档