pdr —— 防止用户多次点击发送重复请求的工具

1. 原生 js 全局使用,不依赖框架

最简单也是最推荐的方式,只需调用 pdr.setOptions 设置好 loadingopacity 等参数, 当页面中由于用户点击某个按钮导致有请求发出时,pdr 会监听到请求并将按钮设为不可点击状态,同时为按钮显示加载图标或降低透明度。

2. 通过 Vue 指令使用

调用 Vue.use(pdr) 后,将会在项目中注入 v-pdr指令,该指令接收一个对象, 对象内容支持的参数与 pdr.setOptions 一致,用于控制当前元素的具体状态。使用指令的另一个好处是不受全局参数 selectors 的限制,可作用于任何元素上。

3. 与第三方组件库如 element ui 配合使用

通过 onRequestonResponse,我们可以很方便地在请求发起 和结束时对请求发起元素进行任何处理,所以搭配第三方组件库用起来也是非常简单。

4. 针对发起多个请求的情况

绝大多数情况下,我们点击元素触发的请求都是单个请求,但是有时调完一个接口接着又要 通过这个接口的数据去调下一个接口,这时候如果不做额外的处理,那么 pdr 默认会在第一个请求结束的时候就认为请求已经完成了,从而移除加载动画或 恢复透明度。

在通过 js 调用时,我们可以通过 pdr.startpdr.stop 两个方法解决这个问题。

在通过 Vue 指令调用时,我们可以通过给指令传一个 fetching 属性解决这个问题。