前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个Vue Compose API组件

一个Vue Compose API组件

作者头像
老鱼的日常
发布2023-09-09 10:15:40
1520
发布2023-09-09 10:15:40
举报
文章被收录于专栏:程序员老鱼呀程序员老鱼呀
哈喽,我是老鱼,一名致力于在技术道路上的终身学习者、实践者、分享者!

在线提取Webstorm激活码地址(每日更新):ob4.cn/web

简介及使用教程

vue-condition-watcher是一个Vue Compose API组件,在进行后端请求时,可以监控condition变化,自动刷新请求。它可以方便处理条件且更好的维护核心逻辑,像是自动响应列表页面的筛选条件等情境。

特色:

  • ✔ 每当 conditions 变动,会自动获取数据
  • ✔ 送出请求前会自动过滤掉 null undefined [] ''
  • ✔ 重新整理网页会自动依照 URL 的 query string 初始化 conditions,且会自动对应型别 ( string, number, array, date )
  • ✔ 每当 conditions 变动,会自动同步 URL query string,并且让上一页下一页都可以正常运作
  • ✔ 避免 race condition,确保请求先进先出,也可以避免重复请求
  • ✔ 在更新 data 前,可做到依赖请求 ( Dependent Request )
  • ✔ 轻松处理分页的需求,简单定制自己的分页逻辑
  • ✔ 当网页重新聚焦或是网络断线恢复自动重新请求资料
  • ✔ 支持轮询,可动态调整轮询周期
  • ✔ 缓存机制让资料可以更快呈现,不用再等待 loading 动画
  • ✔ 不需要等待回传结果,可手动改变 data 让使用者体验更好
  • ✔ 支援 TypeScript
  • ✔ 支援 Vue 2 & 3,感谢 vue-demi
安装
代码语言:javascript
复制
# yarn
yarn add vue-condition-watcher

# NPM
npm install vue-condition-watcher

# CDN
https://unpkg.com/vue-condition-watcher/dist/index.js

快速开始 这是一个使用 vue-next 和 vue-router-next 的简单范例。

首先建立一个 fetcher function, 你可以用原生的 fetch 或是 Axios 这类的套件。接著 import useConditionWatcher 并开始使用它。

代码语言:javascript
复制
createApp({
  template: `
    <div class="filter">
      <input v-model="conditions.name">
      <button @click="execute">Refetch</button>
    </div>
    <div class="container">
      {{ !loading ? data : 'Loading...' }}
    </div>
    <div v-if="error">{{ error }}</div>
  `,
  setup() {
    const fetcher = params => axios.get('/user/', {params})
    const router = useRouter()

    const { conditions, data, loading, error } = useConditionWatcher(
      {
        fetcher,
        conditions: {
          name: ''
        },
        history: {
          sync: router
        }
      }
    )
    return { conditions, data, loading, error }
  },
})
.use(router)
.mount(document.createElement('div'))

您可以使用 data、error 和 loading 的值来确定请求的当前状态。

当 conditions.name 值改变,将会触发 生命週期 重新发送请求.

你可以在 config.history 设定 sync 为 sync: router。 这将会同步 conditions 的变化到 URL 的 query string。

Demo

👉 (推荐) 这边下载 Vue3 版本范例 (使用 Vite)

https://github.com/runkids/vue-condition-watcher/tree/master/examples/vue3

代码语言:javascript
复制
cd examples/vue3
yarn 
yarn serve

👉 这边下载 Vue2 @vue/composition-api 版本范例

https://github.com/runkids/vue-condition-watcher/tree/master/examples/vue2

代码语言:javascript
复制
cd examples/vue2
yarn 
yarn serve

👉 线上 Demo

https://stackblitz.com/edit/vitejs-vite-tsvfqu?devtoolsheight=33&embed=1&file=src/views/Home.vue

Github 项目地址:https://github.com/runkids/vue-condition-watcher

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老鱼的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • Demo
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档