SvelteKit SuperForms 消息始终未定义

问题描述 投票:0回答:1

我正在使用 Sveltekit、sveltekit-superforms、drizzle、zod 模式开发一个表单,以便能够执行表单的服务器端检查,问题在于执行检查后,在尝试将消息发送回在客户端中,消息的值似乎始终是未定义的,尽管我正在发送带有参数设置的消息,但我不明白为什么它不起作用。这是服务器端代码:

export const load = (async () => {
    return {
        formData: await superValidate(ZodSchema)
    };
}) satisfies PageServerLoad;

export const actions: Actions = {
    submitCheckout: async ({ request }) => {
        // Validate the form
        const formData = await superValidate<typeof ZodSchema, AlertMessageType>(
            request,
            ZodSchema
        );

        // Check if form is valid
        if (formData.valid === false) {
            return message(formData, {
                alertType: 'error',
                alertText: INVALID_FORM_DATA_ERROR
            });
        }

...


        return message(formData, {
            alertType: 'success',
            alertText: SUCCESS_MESSAGE
        });
    }
};

虽然这是客户端:

const { enhance, form, errors, message } = superForm(data.props.formData, {
        resetForm: true,
        taintedMessage: null,
        validators: ZodSchema,

        onUpdate: () => {
            isProcessing = false;

            if (!$message) return;

            const { alertType, alertText } = $message;
            if (alertType === 'error') {
                toast.error(alertText);
            }
            if (alertType === 'success') {
                toast.success(alertText);
            }
        }
    });

这是AlertMessage的类型:

export type AlertMessageType = {
    alertType: 'success' | 'error' | 'warning' | 'info';
    alertText: string;
};
javascript forms svelte sveltekit sveltekit-superforms
1个回答
0
投票

这里必须使用

message
,因为你需要提交后的值:

superForm(data.form.data, {
  ...
  onUpdated: ({ message }) => {
    ...
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.