代码之家  ›  专栏  ›  技术社区  ›  Abdelfattah Radwan

如何在自定义使用中执行SvelteKit表单操作的默认逻辑:增强SubmitFunction?

  •  0
  • Abdelfattah Radwan  · 技术社区  · 2 年前

    在执行SvelteKit表单操作之前,我请求用户进行确认。我有一个自定义提交功能,它执行默认的操作逻辑,以防确认 returns true:

    const submit: SubmitFunction = async ({ cancel }) => {
      if (confirm("Are you sure you want to delete this post?")) {
        return async ({ update }) => {
          return update();
        };
      } else {
        cancel();
      }
    };
    

    上面的代码 作品 ,但我也尝试了以下操作:

    const submit: SubmitFunction = async ({ cancel }) => {
      if (confirm("Are you sure you want to delete this post?")) {
        return async ({ result }) => {
          return await applyAction(result);
        };
      } else {
        cancel();
      }
    };
    

    它似乎也在做同样的事情。这两个片段在行为方面有什么不同吗?是否出于技术原因而推荐其中一个?

    1 回复  |  直到 2 年前
        1
  •  1
  •   brunnerh    2 年前

    文档中列出的差异包括:

    • applyAction invalidate all data .
      update 也有一个 invalidateAll 选项来更改行为。
    • 应用程序操作 在…上 success failure $page.status result.status 和更新 form $page.form result.data 无论您从何处提交。
      使现代化 对于其他路由的操作不执行此操作。

    所以一般来说,你可以使用 使现代化 除非您希望防止无效或希望更新 status / 类型 带有来自“外国”行动的数据。