Я пытаюсь обновить дату обновления от state.form.form.radewon, когда пользователь выбирает, но значение по умолчанию для этого будет на один месяц вперед с даты Starton. < /p>
Начальный Значение для Starton и Renewon была установлена на NULL. Всякий раз, когда я пытаюсь установить обновление до более чем одного месяца, функция вызывается и сбрасывается на один месяц. Поскольку это в новой модели оплаты, дата Starton должна быть установлена на последнюю дату продления, и дата обновления должна быть установлена на один месяц вперед по умолчанию. Пользователь должен иметь возможность обновить дату обновления более чем на месяц, но всякий раз, когда я пытаюсь вызвать эту функцию, он продолжает цикл и сброс обратно в дату по умолчанию. < /P>
const setPaymentData = (data: GetPaymentSummaryResponse) => {
let startOn = state.form.Start_On;
let renewOn = state.form.Renew_On;
console.log("Initial Start On:", startOn);
console.log("Initial renew On:", renewOn);
if (data.results.paymentSummary)
{
console.log("Payment Summary Data:", JSON.stringify(data.results.paymentSummary));
if (data.results.paymentSummary.startOn && data.results.paymentSummary.renewOn)
{
startOn = localIsoString(data.results.paymentSummary.renewOn).slice(0,10);
renewOn = addMonths(new Date(startOn), 1).toISOString().slice(0, 10);
} else if (data.results.paymentSummary.startOn) {
startOn = localIsoString(data.results.paymentSummary.startOn).slice(0,10);
renewOn = addMonths(new Date(startOn), 1).toISOString().slice(0, 10);
}
} else {
//New Members startOn date and renewOn date
startOn = new Date().toISOString().slice(0,10);
renewOn = addMonths(new Date(), 1).toISOString().slice(0,10);
}
console.log("Start On:", startOn);
console.log("renew On:", renewOn);
< /code>
const initialState = {
Type: [] as IType[],
Start_On: new Date().toISOString().slice(0, 10),
Renew_On: addMonths(new Date(), 1).toISOString().slice(0, 10),
Payment_Mode: "cash",
Funding_Option: [] as IFundingOption[],
Optional_Member: [] as IHealthyMemberDifference[],
PaymentSummary: {
plan_Price: {
price: 0,
currency: "",
month: "",
},`your text`
active_Members: 0,
options: 0,
duration: 0,
costs: 0,
total_Cost: 0,
deductions: 0,
offset_Difference: 0,
offset_Payment: 0,
currency: "",
startOn: null as string | null | undefined,
renewOn: null as string | null | undefined,
},
Members_List_Payment: [] as CreatePaymentBody["members_List_Payment"],
SMSToLeader: false,
};
< /code>
this is initial state.
Dispatch:
dispatch({
type: "set_form",
payload: {
PaymentSummary: {
plan_Price: data.results.paymentSummary.plan_Price,
active_Members: data.results.paymentSummary.active_Members,
options: data.results.paymentSummary.options,
duration: data.results.paymentSummary.duration,
costs: data.results.paymentSummary.costs,
total_Cost: data.results.paymentSummary.total_Cost,
deductions: data.results.paymentSummary.deductions,
offset_Difference: data.results.paymentSummary.offset_Difference,
offset_Payment: data.results.paymentSummary.offset_Payment,
currency: data.results.paymentSummary.currency,
startOn: data.results.paymentSummary.startOn,
renewOn: data.results.paymentSummary.renewOn,
},
Members_List_Payment: data.results.members_List_Payment.map((mp) => ({
member_Id: mp.member_Id,
memberName: mp.memberName,
memberPlan: mp.memberPlan,
transaction_type: mp.transaction_type,
})),
Type:
data.results.type?.map((type) => ({
id: type.id,
name: type.name,
})) ?? [],
Start_On: startOn,
Renew_On: renewOn,
Funding_Option:
data.results.funding_Option?.map((fo) => ({
Member_Id: fo.member_Id,
Type: {
id: fo.type.id,
name: fo.type.name,
},
Amount: fo.amount,
})) ??
state.form.Funding_Option ??
[],
Optional_Member:
data.results.optional_Member?.map((om) => ({
Member_Id: om.member_Id,
Quantity: om.quantity,
Amount: om.amount,
})) ??
state.form.Optional_Member ??
[],
Payment_Mode: data.results.payment_Mode ?? "cash",
},
});
};
Подробнее здесь: https://stackoverflow.com/questions/794 ... ser-choose