所以我想将我的特定数据添加到 Sveltekit 表单中的 formData 中。
我想这样做,因为我的一些表单输入已通过
{#if }
从 dom 中删除,因此它们不再出现在 formData 中。
这是我的表单组件:
<form
action="?/newReservation"
method="POST"
use:enhance={({ formData }) => {
formData = manageFormData();
console.log(formData.get('numero_chambre'))
return async ({ result, update }) => {
console.log(result, update);
};
}}
>
...
</form>
这是我的
manageFormData()
功能:
const manageFormData = (): FormData => {
let data = new FormData();
let datesArr = dates;
let debut = datesArr[0];
let fin = datesArr[1];
//user infos
data.append("nom", nom);
data.append("prenom", prenom);
data.append("email", email);
//reservation infos
data.append("debut", debut);
data.append("fin", fin);
data.append("numero_chambre", JSON.stringify(bedroomsChoosen));
data.append("total", total.toString());
data.append("nb_petit_dejeuner", nombrePetitDejeuner.toString());
data.append("jours_petit_dejeuner", JSON.stringify(joursPetitDejeuner));
data.append("heure_petit_dejeuner", heurePetitDejeuner);
console.log(data.get('numero_chambre'))
return data;
};
在我所有的
console.log()
中,我得到了正确的numero_chambre
值,但是在我的+page.server.ts
中,每当我获得actions
数据值时,它都会返回null,我通过formData获得的唯一数据是屏幕上可见的表单部分。所以我想修改/创建 formData 以获得我想要的值
numero_chambre
此外,即使通过重新分配原始对象的属性来修复此问题,这也不起作用,因为 SvelteKit 不允许这样做。您必须修改
let prop = thing.prop;
prop = someOtherThing;
// thing.prop is still the same
的原始实例。
因此,要么将原始对象传递到函数中并进行修改,要么将所有数据从新实例传输到原始实例。