Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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_Use State - Fatal编程技术网

Reactjs 日期设置在react中不起作用;“使用状态”;

Reactjs 日期设置在react中不起作用;“使用状态”;,reactjs,use-state,Reactjs,Use State,我试图在react中使用useStatehook,并将传入的props值(startDate)设置为默认值。不幸的是,它总是设置在实际/当前日期。我这里出了什么错 我的代码: export type CalendarProps = { startDate: Date, endDate: Date, }; const SomeCalendarView: React.FC = (props: CalendarProps) => { console.log(props.start

我试图在react中使用
useState
hook,并将传入的props值(startDate)设置为默认值。不幸的是,它总是设置在实际/当前日期。我这里出了什么错

我的代码:

 export type CalendarProps = {
  startDate: Date,
  endDate: Date,
};

const SomeCalendarView: React.FC = (props: CalendarProps) => {
  console.log(props.startDate);
  const [selectedDay, setSelectedDay] = useState(props.startDate);
  console.log(selectedDay);
  ....
我的控制台日志:

5月12日-是我的出发日期

5月14日-是我当前的日期/时间


为什么我得到了实际时间?有什么想法吗?

我不知道,我的道具日期(
startDate
endDate
)有延迟,并且
useState
默认值会立即得到值(因为道具日期不可用,所以用实际/当前日期填充)。我必须使用
useffect
设置道具一改变我的状态。就像这里:

const [selectedDay, setSelectedDay] = useState();
const [selectedStage, setSelectedStage] = useState();

useEffect(
  () => {
    setSelectedDay(props.startDate);
    setSelectedStage(props.stages.valueSeq().first());
  },
  [props.startDate, props.stages],
);

使用
newdate
@bhojendraurauniyar,不幸的是,它给出了相同的结果。尝试使用“useState(new Date(props.startDate))”您在哪里使用此组件?@Hunor我无法复制它()。如果你能复制这个问题并分享这个链接,帮助你会更容易。我不认为这真的像你想象的那样。useEffects第二个参数是一个变量数组,当这些变量更新时,将在其上执行操作,并且useEffect仅在这些变量更新时触发,因此实际上,道具可能会更改,但useEffect已在任何属性更新时触发,因为它满足componentDidUpdate的功能。相反,您可以只传入一个空数组[],这将产生相同的效果(没有双关语),因为这表示您的组件装载/卸载。