原谅我题目党了 ,心愿各位看官能花几分钟看一下。

VueRequest ⚡️ 一个能轻松帮你治理申请状态(反对SWR,轮询,谬误重试,缓存,分页等)的 Vue 3 composition API 申请库

为什么抉择 VueRequest

在以往的业务我的项目中,经常被 loading 状态的治理、申请的节流防抖、接口数据的缓存、分页等这些反复的实现所困惑。每当开启一个新我的项目时,咱们都得手动去解决以上这些问题,这将是一个重复性的工作,而且还得确保团队的统一。

VueRequest 旨在为开发者提供便捷、疾速的形式来治理接口的状态。在业务开发中省去上述的那些“脏活累活”,只须要简略的配置即可应用,专一于业务外围的开发。

个性

  •  所有数据都具备响应式
  •  轮询申请
  •  主动处理错误重试
  •  内置申请缓存
  •  节流申请与防抖申请
  •  聚焦页面时主动从新申请
  • ⚙️  弱小的分页扩大以及加载更多扩大
  •  齐全应用 Typescript 编写,具备弱小的类型提醒
  • ⚡️  兼容 Vite
  •  轻量化
  •  开箱即用

文档

  • English
  • 中文文档

装置

你能够通过 NPM、YARN 或者通过 <script> 的形式引入 unpkg.com 上的包。

NPM

npm install vue-request# oryarn add vue-request

CDN

对于生产环境,咱们举荐链接到一个明确的版本号和构建文件,以防止新版本造成的不可预期的毁坏。
<script src="https://unpkg.com/vue-request/dist/vue-request.min.js"></script>

一旦你在页面中增加了它,你就能够在 window.VueRequest 中拜访咱们导出的办法。

示例

<template>  <div>    <div v-if="loading">loading...</div>    <div v-if="error">failed to fetch</div>    <div v-if="data">Hey! {{ data }}</div>  </div></template><script lang="ts">import { defineComponent } from 'vue';export default defineComponent({  setup() {    const { data, loading, error } = useRequest(service);    return {      data,      loading,      error,    };  },});</script>

在这个例子中,useRequest 接管了一个 service 函数。service是一个异步的申请函数,换句话说,你能够应用 axios 来获取数据,而后返回一个 Promise。更具体的阐明能够在文档中查看。

useRequest 还返回了三个值, dataloadingerror。当申请还没实现时, data 将会为 undefined 同时,loading 将被设置为 true。当申请实现后,则将会依据申请后果来设定 dataerror,并对页面进行渲染。这是因为 dataloadingerror 是 Vue 的 响应式援用(Refs),它们的值将依据申请状态及申请后果来批改。

一些很酷的个性

VueRequest 有十分多的个性,如 谬误重试、缓存、分页、节流、防抖...,这里列举两个个比拟酷的个性

1.聚焦页面时主动从新申请

有些时候,你要确保多个浏览器窗口之间数据的一致性;又或者是当用户电脑在休眠状态从新激活后,页面的数据须要同步到最新状态时。refreshOnWindowFocus 可能会为你节俭很多逻辑代码。点击这里中转文档

const { data, error, run } = useRequest(getUserInfo, {  refreshOnWindowFocus: true,  refocusTimespan: 1000, // 申请间隔时间});

2.轮询数据

有些时候,你要确保多个设施间数据的同步更新。这时候能够用咱们提供的 pollingInterval 来定期从新申请接口,这样就能够保障多设施间的数据一致性。当用户进行批改数据时,两个窗口将会实时同步更新。点击这里中转文档

const { data, error, run } = useRequest(getUserInfo, {  pollingInterval: 1000, // 申请间隔时间});

致谢

感激他们为咱们提供了灵感

  • vercel/swr
  • alibaba/hooks

最初

致力成为最好用的 Vue 申请库!

最初的最初留个 仓库地址,心愿感兴趣的同学能够给我一个 Star ✨