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 @@ 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",