From 0ed982505bb72552c1288419bc4b62b21ec8a08c Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sat, 13 Jul 2024 11:04:05 +0800
Subject: [PATCH 1/3] fix: use-interval no clear func
---
packages/hooks/src/useInterval/demo/demo.vue | 29 +++++++++----
packages/hooks/src/useInterval/index.en-US.md | 7 +--
packages/hooks/src/useInterval/index.ts | 43 ++++++++++++++++---
packages/hooks/src/useInterval/index.zh-CN.md | 7 +--
4 files changed, 65 insertions(+), 21 deletions(-)
diff --git a/packages/hooks/src/useInterval/demo/demo.vue b/packages/hooks/src/useInterval/demo/demo.vue
index 54a1ee78..6c0e5ff2 100644
--- a/packages/hooks/src/useInterval/demo/demo.vue
+++ b/packages/hooks/src/useInterval/demo/demo.vue
@@ -1,16 +1,27 @@
-
- {{ valueRef }}
-
+ value: {{ valueRef }}
+ interval + 1000
+ reset interval
+ clear
+ restart
diff --git a/packages/hooks/src/useInterval/index.en-US.md b/packages/hooks/src/useInterval/index.en-US.md
index d59cc5f5..cfec1810 100644
--- a/packages/hooks/src/useInterval/index.en-US.md
+++ b/packages/hooks/src/useInterval/index.en-US.md
@@ -41,6 +41,7 @@ useInterval(
## Result
-| Property | Description | Type |
-| ------------- | -------------- | ------------ |
-| clearInterval | clear interval | `() => void` |
+| Property | Description | Type |
+| -------- | ---------------- | ------------ |
+| clear | clear interval | `() => void` |
+| restart | restart interval | `() => void` |
diff --git a/packages/hooks/src/useInterval/index.ts b/packages/hooks/src/useInterval/index.ts
index faf2cb0b..554f023a 100644
--- a/packages/hooks/src/useInterval/index.ts
+++ b/packages/hooks/src/useInterval/index.ts
@@ -16,28 +16,59 @@ function useInterval(
*/
immediate?: boolean
},
-): void {
+): {
+ /**
+ * Clear the interval timer.
+ */
+ clear: VoidFunction
+ /**
+ * Restart the interval timer.
+ */
+ restart: VoidFunction
+} {
const immediate = options?.immediate
const fnRef = ref(fn)
- watchEffect(onInvalidate => {
+ const timerRef = ref | null>(null)
+
+ const setupInterval = () => {
if (isRef(delay)) {
if (typeof delay.value !== 'number' || delay.value < 0) return
} else {
if (typeof delay !== 'number' || delay < 0) return
}
+
if (immediate) {
fnRef.value()
}
+
const _deply = unref(delay)
- const timer = setInterval(() => {
+ timerRef.value = setInterval(() => {
fnRef.value()
}, _deply)
- onInvalidate(() => {
- clearInterval(timer)
- })
+ }
+
+ const clear = () => {
+ if (timerRef.value) {
+ clearInterval(timerRef.value)
+ }
+ }
+
+ const restart = () => {
+ clear()
+ setupInterval()
+ }
+
+ watchEffect(onInvalidate => {
+ setupInterval()
+ onInvalidate(clear)
})
+
+ return {
+ clear,
+ restart,
+ }
}
export default useInterval
diff --git a/packages/hooks/src/useInterval/index.zh-CN.md b/packages/hooks/src/useInterval/index.zh-CN.md
index a94ba6d4..188d7836 100644
--- a/packages/hooks/src/useInterval/index.zh-CN.md
+++ b/packages/hooks/src/useInterval/index.zh-CN.md
@@ -41,6 +41,7 @@ useInterval(
## Result
-| 参数 | 说明 | 类型 |
-| ------------- | ---------- | ------------ |
-| clearInterval | 清除定时器 | `() => void` |
+| 参数 | 说明 | 类型 |
+| ------- | -------------- | ------------ |
+| clear | 清除定时器 | `() => void` |
+| restart | 重新启动定时器 | `() => void` |
From 315579665c6c6a091302afa29d91e3aac9ebcdd6 Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sat, 13 Jul 2024 11:31:33 +0800
Subject: [PATCH 2/3] chore: github ci
---
.github/workflows/ci.yml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 7b75e9ea..6fbaf347 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -32,6 +32,10 @@ jobs:
- name: Build Lib
run: |
pnpm build
+ - name: Build Docs plugin
+ run: |
+ cd packages/vitepress/vitepress-demo-block
+ pnpm run build
- name: Build Docs
run: |
cd packages/hooks
From 9d41e70786171eb22a83e424d0e48c1b9ced7d7a Mon Sep 17 00:00:00 2001
From: YongGit <1013588891@qq.com>
Date: Sat, 13 Jul 2024 11:40:05 +0800
Subject: [PATCH 3/3] chore: script command
---
package.json | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/package.json b/package.json
index b1d7e95c..65c2f2e4 100644
--- a/package.json
+++ b/package.json
@@ -4,10 +4,11 @@
"private": true,
"scripts": {
"bootstrap": "tsx scripts/bootstrap.ts",
- "docs:dev":"tsx scripts/docs.ts dev",
- "docs:build":"tsx scripts/docs.ts build",
- "docs:build-github":"tsx scripts/gitPage.ts github",
- "docs:build-gitee":"tsx scripts/gitPage.ts gitee",
+ "build:vitepress-demo-block":"cd packages/vitepress/vitepress-demo-block && pnpm build",
+ "docs:dev":"pnpm build:vitepress-demo-block && tsx scripts/docs.ts dev",
+ "docs:build":"pnpm build:vitepress-demo-block && tsx scripts/docs.ts build",
+ "docs:build-github":"pnpm build:vitepress-demo-block && tsx scripts/gitPage.ts github",
+ "docs:build-gitee":"pnpm build:vitepress-demo-block && tsx scripts/gitPage.ts gitee",
"clean": " rimraf dist lib es",
"build": "pnpm bootstrap && tsx scripts/build.ts",
"test": "vitest",