Felte设置onSuccess后SvelteKit的Redirect失效,如何复用默认重定向逻辑?
问题解答:Felte onSuccess 覆盖默认重定向的处理方法
可以实现不用完全重写代码,复用Felte默认的重定向逻辑。
原因很直接:当你自定义onSuccess回调时,会直接覆盖Felte原本默认的成功处理逻辑——其中就包含了自动识别服务器返回的重定向响应并跳转的逻辑,所以删掉onSuccess后重定向能正常工作,加了就失效。
解决方法也简单:在你的自定义onSuccess里,先执行自己的业务逻辑(比如invalidate('app:auth')),再手动补上重定向的处理,这就相当于复用了默认逻辑的核心行为:
// SignUpForm.svelte import { createForm } from '@felte/svelte'; import { goto } from '$app/navigation'; const { form, errors } = createForm({ onSuccess: async (response) => { // 先执行你的自定义逻辑 invalidate('app:auth'); // 复用默认重定向逻辑:检查响应中的Location头并跳转 if (response instanceof Response) { const redirectUrl = response.headers.get('Location'); if (redirectUrl) { await goto(redirectUrl); } } }, // 其他表单配置... });
这样既保留了你需要的自定义操作,又能让SvelteKit actions里的重定向正常生效,不用自己从零搭建重定向逻辑。
内容的提问来源于stack exchange,提问作者Rokas Rudgalvis
相关产品推荐
相关产品推荐

