UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

1 lines 1.87 kB
{"version":3,"file":"index.mjs","sources":["../../../../../src/hooks/use-throttle-render/index.ts"],"sourcesContent":["import { onMounted, ref, watch } from 'vue';\r\nimport type { Ref } from 'vue';\r\n\r\n// 节流渲染\r\nexport const useThrottleRender = (loading: Ref<boolean>, throttle = 0) => {\r\n // 节流\r\n if (throttle === 0) {\r\n return loading;\r\n }\r\n\r\n // data\r\n\r\n // 节流\r\n const throttled = ref(false);\r\n\r\n // 倒计时\r\n let setTimeout = 0;\r\n\r\n // methods\r\n\r\n // 节流事件\r\n const throttlingHandle = () => {\r\n if (setTimeout) {\r\n clearTimeout(setTimeout);\r\n }\r\n\r\n // 倒计时\r\n setTimeout = window.setTimeout(() => {\r\n throttled.value = loading.value;\r\n }, throttle);\r\n };\r\n\r\n // watch\r\n\r\n // 监听加载完成\r\n watch(\r\n () => loading.value,\r\n (value) => {\r\n if (value) {\r\n throttlingHandle();\r\n } else {\r\n throttled.value = value;\r\n }\r\n }\r\n );\r\n\r\n // onMounted\r\n onMounted(throttlingHandle);\r\n\r\n return throttled;\r\n};\r\n"],"names":[],"mappings":";;AAIO,MAAM,iBAAoB,GAAA,CAAC,OAAuB,EAAA,QAAA,GAAW,CAAM,KAAA;AAExE,EAAA,IAAI,aAAa,CAAG,EAAA;AAClB,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAKA,EAAM,MAAA,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAG3B,EAAA,IAAI,UAAa,GAAA,CAAA,CAAA;AAKjB,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,YAAA,CAAa,UAAU,CAAA,CAAA;AAAA,KACzB;AAGA,IAAa,UAAA,GAAA,MAAA,CAAO,WAAW,MAAM;AACnC,MAAA,SAAA,CAAU,QAAQ,OAAQ,CAAA,KAAA,CAAA;AAAA,OACzB,QAAQ,CAAA,CAAA;AAAA,GACb,CAAA;AAKA,EAAA,KAAA;AAAA,IACE,MAAM,OAAQ,CAAA,KAAA;AAAA,IACd,CAAC,KAAU,KAAA;AACT,MAAA,IAAI,KAAO,EAAA;AACT,QAAiB,gBAAA,EAAA,CAAA;AAAA,OACZ,MAAA;AACL,QAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,GACF,CAAA;AAGA,EAAA,SAAA,CAAU,gBAAgB,CAAA,CAAA;AAE1B,EAAO,OAAA,SAAA,CAAA;AACT;;;;"}