Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React钩子窗体与日期选择器范围不匹配';不选日期_Reactjs_React Datepicker_React Hook Form - Fatal编程技术网

Reactjs React钩子窗体与日期选择器范围不匹配';不选日期

Reactjs React钩子窗体与日期选择器范围不匹配';不选日期,reactjs,react-datepicker,react-hook-form,Reactjs,React Datepicker,React Hook Form,我收到了以下日期选择器。 开始日期: <Controller as={ <DatePicker selected={travelRoute?.dateStart || new Date()} selectsStart startDate={travelRoute?.dateStart} endDate={travelRoute?.dateEnd}

我收到了以下日期选择器。
开始日期:

<Controller
    as={
        <DatePicker
            selected={travelRoute?.dateStart || new Date()}
            selectsStart
            startDate={travelRoute?.dateStart}
            endDate={travelRoute?.dateEnd}
            inline
        />
    }
    control={control}
    rules={{ required: true }}
    valueName="selected"
    onChange={date => handleStartDateOnChange(date)}
    name="dateStart"
    placeholderText="Select date"
    defaultValue={null}
/>  

您好,您使用了错误的方法来自定义
DatePicker
中的
onChange
事件。而
Controller
上的
onChange
事件无法正常工作。因为在这种情况下,您不必使用
as=
语法,而是使用
render=
语法,如:

<Controller
    render={({ onChange }) => (
      <DatePicker
        ...
        onChange={date => handleStartDateOnChange(date)}
      />
    )}
    ...
  />
(
handleStartDateOnChange(日期)}
/>
)}
...
/>
因此,您的代码变成:

开始日期

<Controller
    render={({ onChange }) => (
      <DatePicker
        selected={travelRoute?.dateStart || new Date()}
        selectsStart
        startDate={travelRoute?.dateStart}
        endDate={travelRoute?.dateEnd}
        inline
        onChange={date => handleStartDateOnChange(date)}
      />
    )}
    control={control}
    rules={{ required: true }}
    valueName="selected"
    name="dateStart"
    placeholderText="Select date"
    defaultValue={null}
  />
<Controller
    render={({ onChange }) => (
      <DatePicker
        name="dateEnd"
        selected={travelRoute?.dateEnd || new Date()}
        onChange={date => handleEndDateOnChange(date)}
        selectsEnd
        startDate={travelRoute?.dateStart}
        endDate={travelRoute?.dateEnd}
        minDate={travelRoute?.dateStart}
        inline
      />
    )}
    control={control}
    rules={{ required: true }}
    valueName="selected"
    name="dateEnd"
    placeholderText="Select date"
    defaultValue={null}
  />
(
handleStartDateOnChange(日期)}
/>
)}
control={control}
规则={required:true}
valueName=“已选定”
name=“dateStart”
占位符text=“选择日期”
defaultValue={null}
/>
结束日期

<Controller
    render={({ onChange }) => (
      <DatePicker
        selected={travelRoute?.dateStart || new Date()}
        selectsStart
        startDate={travelRoute?.dateStart}
        endDate={travelRoute?.dateEnd}
        inline
        onChange={date => handleStartDateOnChange(date)}
      />
    )}
    control={control}
    rules={{ required: true }}
    valueName="selected"
    name="dateStart"
    placeholderText="Select date"
    defaultValue={null}
  />
<Controller
    render={({ onChange }) => (
      <DatePicker
        name="dateEnd"
        selected={travelRoute?.dateEnd || new Date()}
        onChange={date => handleEndDateOnChange(date)}
        selectsEnd
        startDate={travelRoute?.dateStart}
        endDate={travelRoute?.dateEnd}
        minDate={travelRoute?.dateStart}
        inline
      />
    )}
    control={control}
    rules={{ required: true }}
    valueName="selected"
    name="dateEnd"
    placeholderText="Select date"
    defaultValue={null}
  />
(
handleEndDateOnChange(日期)}
选择发送
startDate={travelRoute?.dateStart}
endDate={travelRoute?.dateEnd}
minDate={travelRoute?.dateStart}
内联
/>
)}
control={control}
规则={required:true}
valueName=“已选定”
name=“dateEnd”
占位符text=“选择日期”
defaultValue={null}
/>
一个有效的例子


注意:我不知道为什么codesandbox中的
DatePicker
看起来这么难看。可能是
控制器
,因为在其他codesandbox中看起来不错。

Ciao,您在
日期选择器
中使用错误的方法自定义
onChange
事件。而
Controller
上的
onChange
事件无法正常工作。因为在这种情况下,您不必使用
as=
语法,而是使用
render=
语法,如:

<Controller
    render={({ onChange }) => (
      <DatePicker
        ...
        onChange={date => handleStartDateOnChange(date)}
      />
    )}
    ...
  />
(
handleStartDateOnChange(日期)}
/>
)}
...
/>
因此,您的代码变成:

开始日期

<Controller
    render={({ onChange }) => (
      <DatePicker
        selected={travelRoute?.dateStart || new Date()}
        selectsStart
        startDate={travelRoute?.dateStart}
        endDate={travelRoute?.dateEnd}
        inline
        onChange={date => handleStartDateOnChange(date)}
      />
    )}
    control={control}
    rules={{ required: true }}
    valueName="selected"
    name="dateStart"
    placeholderText="Select date"
    defaultValue={null}
  />
<Controller
    render={({ onChange }) => (
      <DatePicker
        name="dateEnd"
        selected={travelRoute?.dateEnd || new Date()}
        onChange={date => handleEndDateOnChange(date)}
        selectsEnd
        startDate={travelRoute?.dateStart}
        endDate={travelRoute?.dateEnd}
        minDate={travelRoute?.dateStart}
        inline
      />
    )}
    control={control}
    rules={{ required: true }}
    valueName="selected"
    name="dateEnd"
    placeholderText="Select date"
    defaultValue={null}
  />
(
handleStartDateOnChange(日期)}
/>
)}
control={control}
规则={required:true}
valueName=“已选定”
name=“dateStart”
占位符text=“选择日期”
defaultValue={null}
/>
结束日期

<Controller
    render={({ onChange }) => (
      <DatePicker
        selected={travelRoute?.dateStart || new Date()}
        selectsStart
        startDate={travelRoute?.dateStart}
        endDate={travelRoute?.dateEnd}
        inline
        onChange={date => handleStartDateOnChange(date)}
      />
    )}
    control={control}
    rules={{ required: true }}
    valueName="selected"
    name="dateStart"
    placeholderText="Select date"
    defaultValue={null}
  />
<Controller
    render={({ onChange }) => (
      <DatePicker
        name="dateEnd"
        selected={travelRoute?.dateEnd || new Date()}
        onChange={date => handleEndDateOnChange(date)}
        selectsEnd
        startDate={travelRoute?.dateStart}
        endDate={travelRoute?.dateEnd}
        minDate={travelRoute?.dateStart}
        inline
      />
    )}
    control={control}
    rules={{ required: true }}
    valueName="selected"
    name="dateEnd"
    placeholderText="Select date"
    defaultValue={null}
  />
(
handleEndDateOnChange(日期)}
选择发送
startDate={travelRoute?.dateStart}
endDate={travelRoute?.dateEnd}
minDate={travelRoute?.dateStart}
内联
/>
)}
control={control}
规则={required:true}
valueName=“已选定”
name=“dateEnd”
占位符text=“选择日期”
defaultValue={null}
/>
一个有效的例子


注意:我不知道为什么codesandbox中的
DatePicker
看起来这么难看。可能是
控制器
,因为在其他代码中,Sandbox看起来不错。

显示onChange处理程序我添加了onChange处理程序。显示onChange处理程序我添加了onChange处理程序。非常高兴听到这个消息!祝你有愉快的一天:)你知道为什么我只从这两个日期选择器中得到一个未定义的值吗?再见,在我的示例中,我在页面末尾放置了一个按钮,以验证状态是否已更新。如果选择任何日期作为开始日期,则dateStart有一个值。然后,如果为结束日期选择的日期早于minDate(在本例中为dateStart),则dateEnd仍然为空。这可能是你的问题(即使我认为你已经证实了…)。如果我发现其他线索,我会再写一条评论。非常非常高兴听到!祝你有愉快的一天:)你知道为什么我只从这两个日期选择器中得到一个未定义的值吗?再见,在我的示例中,我在页面末尾放置了一个按钮,以验证状态是否已更新。如果选择任何日期作为开始日期,则dateStart有一个值。然后,如果为结束日期选择的日期早于minDate(在本例中为dateStart),则dateEnd仍然为空。这可能是你的问题(即使我认为你已经证实了…)。如果我找到其他线索,我会再写一条评论。