Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
为什么不使用javascript和react更新值?_Javascript_Reactjs_React Dates - Fatal编程技术网

为什么不使用javascript和react更新值?

为什么不使用javascript和react更新值?,javascript,reactjs,react-dates,Javascript,Reactjs,React Dates,我想设置日历的开始和结束日期 初始开始日期和结束日期不是预定义的。 当用户只单击开始日期时,结束日期也设置为startdate,focusedinput变为enddate。当用户单击endate时,从开始到结束的选定日期范围将突出显示 现在,当用户单击另一个日期时,该日期设置为开始日期,而结束日期现在设置为开始日期。当用户单击endate时,从开始到结束的选定日期范围将突出显示 这也是同样的过程 下面是我的代码 constuserangedates=()=>{ 常量[startDate,setS

我想设置日历的开始和结束日期

初始开始日期和结束日期不是预定义的。 当用户只单击开始日期时,结束日期也设置为startdate,focusedinput变为enddate。当用户单击endate时,从开始到结束的选定日期范围将突出显示

现在,当用户单击另一个日期时,该日期设置为开始日期,而结束日期现在设置为开始日期。当用户单击endate时,从开始到结束的选定日期范围将突出显示

这也是同样的过程

下面是我的代码

constuserangedates=()=>{
常量[startDate,setStartDate]=React.useState(null);
const[endDate,setEndDate]=React.useState(null);
const[focusedInput,setFocusedInput]=React.useState('startDate');
常量usePrevious=(值:任意)=>{
const ref=React.useRef();
React.useffect(()=>{
参考电流=值;
},[价值];
返回参考电流;
};
const prevDate=usePrevious(开始日期);
const updateStartDate=(newStartDate:any)=>{
setFocusedInput('endDate');
设置开始日期(newStartDate);
};
const updateStartEnd=(newEndDate:any,newStartDate:any)=>{
if(prevDate&&newStartDate&&newStartDate.isBefore(prevDate,'d')){//这里我检查newStartDate是否在prevstartdate之前
setEndDate(newStartDate);
}否则{
setEndDate(newEndDate);
}
};
const onDatesChange=(newDates:{startDate,endDate})
}) => {
updateStartDate(newDates.startDate);
if(newDates.endDate!==null){
updateStartEnd(newDates.endDate、newDates.startDate);
}否则{
updateStartEnd(newDates.startDate,newDates.startDate);
}
};
返回{
聚焦输入,
翁达特桑奇,
等外边距,
开始日期,
结束日期,
onFocusChange:(聚焦:字符串)=>{
setFocusedInput(!聚焦?'startDate':聚焦);
},
};
};
函数CreationForm(){
常数{
聚焦输入,
翁达特桑奇,
等外边距,
开始日期,
结束日期,
onFocusChange,
}=useRangeDates();
返回(
);
}
这段代码运行良好。但是,当我选择上一个startdate之前的日期时,enddate设置为enddate。当用户现在单击enddate时,就会进入updatestartend中的if条件,并再次将enddate设置为startdate。这是因为prevdate仍然与前一个prevdate相同,因此没有更新

当用户即将单击enddate时,我希望现在是newstartdate

我不确定出了什么问题。有人能帮我吗。谢谢