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仍然为空。这可能是你的问题(即使我认为你已经证实了…)。如果我找到其他线索,我会再写一条评论。