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