震惊!这个表单提交策略竟然比react-query还强?

373 阅读3分钟

嘿,各位前端小伙伴们!今天我要跟大家聊聊一个超级实用的东西 —— 表单提交策略。说实话,你们是不是经常为表单提交的各种细节而头疼?别担心,我最近发现了一个真正帮了大忙的工具,它让表单提交变得简单又高效。今天就让我来分享一下这个小助手吧!

alovajs:表单提交的得力助手

说到表单提交策略,我们就不得不提到 alovajs 这个厉害的工具了。alovajs 是一个请求流程简化的下一代请求工具。老实说,它不仅提供了更现代化的 openapi 生成方案,还为各种请求场景提供了高质量的请求策略。与 react-query 和 swrjs 等库相比,alovajs 使用起来更加顺畑,能让我们用非常少的代码就实现特定场景下的请求。

如果你想了解更多关于 alovajs 的信息,可以去官网看看:alova.js.org。相信我,你会发现一个全新的请求世界!

alovajs 的表单提交策略

现在,让我们来看看 alovajs 的表单提交策略是如何使用的吧。我个人觉得,这些功能真的是太贴心了!

基本用法

首先是基本用法:

const submitData = data => {
  return alovaInstance.Post('/api/submit', data);
};

const {
  loading: submiting,
  form,
  send: submit,
  onSuccess,
  onError,
  onComplete
} = useForm(
  formData => {
    return submitData(formData);
  },
  {
    initialForm: {
      name: '',
      cls: '1'
    }
  }
);

这段代码看起来很简单吧?但它已经帮我们处理了很多细节。我第一次用的时候,真的被它的简洁惊艳到了!

提交自动重置表单

提交自动重置表单?没问题!只需要设置一个参数:

useForm(submitData, {
  resetAfterSubmiting: true
});

这个功能真的是省了我不少事,再也不用手动重置表单了!

更新表单数据

需要更新表单数据?也很简单:

const { updateForm } = useForm(submitData, {
  initialForm: {
    name: '',
    cls: '1'
  }
});

onSuccess(({ data }) => {
  updateForm({
    name: data.name,
    cls: data.cls
  });
});

这个功能对于编辑表单来说简直是神器!

表单草稿功能

alovajs 还提供了表单草稿功能,即使刷新页面也可以恢复表单数据:

useForm(submitData, {
  store: true
});

说实话,这个功能真的解决了我很多烦恼。再也不用担心不小心刷新页面丢失数据了!

多页面/多步骤表单

最让我惊喜的是它的多页面/多步骤表单功能。只需要设置一个 id,就可以在不同页面间共享同一份表单数据:

// 组件A
const returnStates = useForm(submitData, {
  initialForm: {
    step1Input: '',
    step2Input: '',
    step3Input: ''
  },
  id: 'testForm'
});

// 组件B、组件C
const returnStates = useForm(submitData, {
  id: 'testForm'
});

这样,我们就可以轻松处理复杂的多步骤表单了。老实说,这个功能真的让我省了不少事!

条件筛选

最后,如果你需要进行条件筛选,alovajs 也提供了便捷的方式:

const { send: searchData } = useForm(queryCity, {
  initialForm: {
    cityName: ''
  },
  immediate: true
});

这个功能对于需要实时搜索的场景来说简直是太方便了!

总结

看完这些,你是不是觉得 alovajs 的表单提交策略真的很强大?它不仅简化了我们的代码,还帮我们解决了很多常见的表单问题。我个人使用后感觉开发效率提高了不少,代码也变得更加清晰易懂了。

那么,你们平时是怎么处理表单提交的呢?有没有遇到过什么棘手的问题?不妨试试 alovajs,也许它能给你带来意想不到的惊喜。我真的很好奇你们的想法,欢迎在评论区分享你的经验和感受。让我们一起进步,一起打造更棒的前端应用!