Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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 当从async方法多次更新useContext变量时,仅保存最后一次更新,其他更新将设置回其以前的状态_Reactjs - Fatal编程技术网

Reactjs 当从async方法多次更新useContext变量时,仅保存最后一次更新,其他更新将设置回其以前的状态

Reactjs 当从async方法多次更新useContext变量时,仅保存最后一次更新,其他更新将设置回其以前的状态,reactjs,Reactjs,我试图从异步函数更新useContext中的两个值。 第一,调用handleBookingDetailsChange(输出数据,'outputData'); 如图所示,该值已正确更新。 第二:致电handleBookingDetailsChange(正确,“预订完成”); 该值已正确更新,但“outputData”已重置回null,如下所示 下面是我如何设置它的: const { bookingDetails, dispatch, user } = useContext(AppContext

我试图从异步函数更新useContext中的两个值。 第一,调用handleBookingDetailsChange(输出数据,'outputData'); 如图所示,该值已正确更新。

第二:致电handleBookingDetailsChange(正确,“预订完成”); 该值已正确更新,但“outputData”已重置回null,如下所示

下面是我如何设置它的:

const { bookingDetails, dispatch, user } = useContext(AppContext);
const {  oneWay,booking_completed,bookingPlanResponse } = bookingDetails;
   
useEffect(() => {
        if(booking_completed !== true){ 
          if(bookingPlanResponse !== null){
            createBooking(bookingDetails);
          } else {
            console.log('booking plan response esta vacio.');
          }
    
        }
  const sleep = (milliseconds) => {
    return new Promise(resolve => setTimeout(resolve, milliseconds));
  };

  const handleBookingDetailsChange = (value, key) => {
    const newErrors = errors.filter(error => error !== key);
    setErrors(newErrors);

    dispatch({
      type: 'setBookingDetails',
      value: { ...bookingDetails, [key]: value },
    });
  };

      const createBooking = async (data) => {
        console.log('createPNR()');
        var output_data = await setAPIData(data);
        console.log(output_data);
        await sleep(10000); //wait 10 seconds.
        handleBookingDetailsChange(output_data, 'outputData'); 
        await sleep(10000); //wait 10 seconds.
        handleBookingDetailsChange(true, 'booking_completed'); //outputData resets to null -_-.
        console.log('booking_completed = true.');
      };
我想了解为什么不允许我更新多个值