From 6df7e376176ca4f00d3051e9eaa21a0160c9d408 Mon Sep 17 00:00:00 2001
From: novlan1 <1576271227@qq.com>
Date: Fri, 26 Jun 2026 16:41:46 +0800
Subject: [PATCH 01/11] docs: update tdesign uniapp homepage
---
packages/tdesign-uniapp-chat/package.json | 1 +
packages/tdesign-uniapp-chat/site/package.json | 2 +-
packages/tdesign-uniapp/package.json | 1 +
packages/tdesign-uniapp/site/package.json | 2 +-
4 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/packages/tdesign-uniapp-chat/package.json b/packages/tdesign-uniapp-chat/package.json
index 6a3d911ad..85e42295f 100644
--- a/packages/tdesign-uniapp-chat/package.json
+++ b/packages/tdesign-uniapp-chat/package.json
@@ -85,6 +85,7 @@
"url": "git+https://github.com/Tencent/tdesign-miniprogram.git",
"directory": "packages/tdesign-uniapp-chat"
},
+ "homepage": "https://tdesign.tencent.com/uniapp-chat",
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
diff --git a/packages/tdesign-uniapp-chat/site/package.json b/packages/tdesign-uniapp-chat/site/package.json
index 12becc5ae..51ff37310 100644
--- a/packages/tdesign-uniapp-chat/site/package.json
+++ b/packages/tdesign-uniapp-chat/site/package.json
@@ -5,7 +5,7 @@
"version": "0.0.1",
"description": "site of tdesign-uniapp-chat",
"author": "novlan1",
- "homepage": "https://tdesign.tencent.com/uniapp/",
+ "homepage": "https://tdesign.tencent.com/uniapp-chat",
"bugs": {
"url": "https://github.com/Tencent/tdesign-miniprogram/issues"
},
diff --git a/packages/tdesign-uniapp/package.json b/packages/tdesign-uniapp/package.json
index 50512548b..d905205ce 100644
--- a/packages/tdesign-uniapp/package.json
+++ b/packages/tdesign-uniapp/package.json
@@ -28,6 +28,7 @@
"url": "git+https://github.com/Tencent/tdesign-miniprogram.git",
"directory": "packages/tdesign-uniapp"
},
+ "homepage": "https://tdesign.tencent.com/uniapp",
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
diff --git a/packages/tdesign-uniapp/site/package.json b/packages/tdesign-uniapp/site/package.json
index e1db01b59..625c5c09c 100644
--- a/packages/tdesign-uniapp/site/package.json
+++ b/packages/tdesign-uniapp/site/package.json
@@ -5,7 +5,7 @@
"version": "0.0.1",
"description": "site of tdesign-uniapp",
"author": "novlan1",
- "homepage": "https://tdesign.tencent.com/uniapp/",
+ "homepage": "https://tdesign.tencent.com/uniapp",
"bugs": {
"url": "https://github.com/Tencent/tdesign-miniprogram/issues"
},
From a4e0b825c9632fa2565b09db7ceb77a2adb80827 Mon Sep 17 00:00:00 2001
From: novlan1 <1576271227@qq.com>
Date: Sat, 27 Jun 2026 15:42:55 +0800
Subject: [PATCH 02/11] =?UTF-8?q?chore:=20=E9=A6=96=E9=A1=B5demo=E4=B8=8D?=
=?UTF-8?q?=E6=98=BE=E7=A4=BA=E8=BF=94=E5=9B=9E=E6=8C=89=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/tdesign-uniapp/example/src/pages/home/home.vue | 2 +-
packages/uniapp-components/demo-navbar/demo-navbar.vue | 6 +++++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/packages/tdesign-uniapp/example/src/pages/home/home.vue b/packages/tdesign-uniapp/example/src/pages/home/home.vue
index 7f54d7778..6d9918d79 100644
--- a/packages/tdesign-uniapp/example/src/pages/home/home.vue
+++ b/packages/tdesign-uniapp/example/src/pages/home/home.vue
@@ -4,7 +4,7 @@
-
+
diff --git a/packages/uniapp-components/demo-navbar/demo-navbar.vue b/packages/uniapp-components/demo-navbar/demo-navbar.vue
index b439f12b5..c6fe01086 100644
--- a/packages/uniapp-components/demo-navbar/demo-navbar.vue
+++ b/packages/uniapp-components/demo-navbar/demo-navbar.vue
@@ -3,7 +3,7 @@
Date: Mon, 29 Jun 2026 10:25:51 +0800
Subject: [PATCH 03/11] chore: update docs home text
---
.../example/src/pages/home/home.vue | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/packages/tdesign-uniapp/example/src/pages/home/home.vue b/packages/tdesign-uniapp/example/src/pages/home/home.vue
index 6d9918d79..15e0eea27 100644
--- a/packages/tdesign-uniapp/example/src/pages/home/home.vue
+++ b/packages/tdesign-uniapp/example/src/pages/home/home.vue
@@ -31,7 +31,7 @@
@@ -80,6 +80,21 @@ export default {
debugEnabled: false,
};
},
+ computed: {
+ platformDesc() {
+ let result = '应用';
+
+ // #ifdef H5
+ result = '网站';
+ // #endif
+
+ // #ifdef MP
+ result = '小程序';
+ // #endif
+
+ return result;
+ },
+ },
onLoad(options) {
const { q, skyline: querySkyline } = options || {};
From c99c1540478ea2e56c7f66eeff430fd84427ecd9 Mon Sep 17 00:00:00 2001
From: novlan1 <1576271227@qq.com>
Date: Mon, 29 Jun 2026 12:25:35 +0800
Subject: [PATCH 04/11] =?UTF-8?q?perf:=20=E4=BF=AE=E5=A4=8D=E9=B8=BF?=
=?UTF-8?q?=E8=92=99=E4=B8=8Bcount-down=E7=BB=84=E4=BB=B6=E7=9A=84cppcrash?=
=?UTF-8?q?=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../count-down/_example/base/index.vue | 2 +
.../count-down/_example/count-down.vue | 2 +
.../count-down/count-down.vue | 45 +++++++++++++++----
.../popover/_example/popover.vue | 2 +-
.../popup/_example/custom-close/index.vue | 2 +-
.../popup/_example/popup.vue | 2 +-
.../popup/_example/skyline/popup.vue | 2 +-
.../uniapp-components/tag/_example/tag.vue | 2 +-
8 files changed, 45 insertions(+), 14 deletions(-)
diff --git a/packages/uniapp-components/count-down/_example/base/index.vue b/packages/uniapp-components/count-down/_example/base/index.vue
index f807f5637..556411792 100644
--- a/packages/uniapp-components/count-down/_example/base/index.vue
+++ b/packages/uniapp-components/count-down/_example/base/index.vue
@@ -21,6 +21,7 @@
+
带圆形底
@@ -47,6 +48,7 @@
/>
+
diff --git a/packages/uniapp-components/count-down/_example/count-down.vue b/packages/uniapp-components/count-down/_example/count-down.vue
index 26228252a..0fe8b41b4 100644
--- a/packages/uniapp-components/count-down/_example/count-down.vue
+++ b/packages/uniapp-components/count-down/_example/count-down.vue
@@ -10,9 +10,11 @@
+
+
diff --git a/packages/uniapp-components/count-down/count-down.vue b/packages/uniapp-components/count-down/count-down.vue
index 24f3e1061..c476f3499 100644
--- a/packages/uniapp-components/count-down/count-down.vue
+++ b/packages/uniapp-components/count-down/count-down.vue
@@ -55,12 +55,18 @@ export default {
prefix,
classPrefix: name,
timeDataUnit: TimeDataUnit,
- timeData: parseTimeData(0),
+ // 用 Object.freeze 阻断 Vue3 对 timeData 内部 5 个字段的深度响应化,
+ // 减少鸿蒙 V8 下 Proxy.set 的次数(高频 setTimeout 写 reactive 会触发 GC race -> SIGSEGV)
+ timeData: Object.freeze(parseTimeData(0)),
formattedTime: '0',
tools,
timeoutId: null,
isInitialTime: false,
timeRange: [],
+ // 组件是否已销毁标记(非响应式,仅作为闭包标志使用)
+ // 用于防止 setTimeout 回调在组件卸载后访问已销毁的 reactive 实例
+ // 鸿蒙 (HarmonyOS) 端 V8 在该场景下会触发 SIGSEGV(SEGV_MAPERR)
+ _destroyed: false,
};
},
watch: {
@@ -71,8 +77,12 @@ export default {
immediate: true,
},
},
- mounted() {},
+ mounted() {
+ this._destroyed = false;
+ },
beforeUnmount() {
+ this._destroyed = true;
+ this.counting = false;
if (this.timeoutId) {
clearTimeout(this.timeoutId);
this.timeoutId = null;
@@ -92,7 +102,10 @@ export default {
pause() {
this.counting = false;
- this.timeoutId && clearTimeout(this.timeoutId);
+ if (this.timeoutId) {
+ clearTimeout(this.timeoutId);
+ this.timeoutId = null;
+ }
},
reset() {
@@ -119,10 +132,14 @@ export default {
const { timeText } = parseFormat(remain, format);
- const timeRange = format.split(':');
-
- this.timeRange = timeRange;
- this.timeData = timeData;
+ // timeRange 仅由 format(prop) 决定,初次或 format 变化时才赋值,
+ // 避免每帧都写 reactive 数组造成鸿蒙端 V8 GC race。
+ if (!this._lastFormat || this._lastFormat !== format) {
+ this.timeRange = format.split(':');
+ this._lastFormat = format;
+ }
+ // freeze 一下,禁止 Vue 深度响应化每帧的新对象
+ this.timeData = Object.freeze(timeData);
this.formattedTime = timeText.replace(/:/g, ' : ');
if (remain === 0 && (this.counting || this.isInitialTime)) {
@@ -133,7 +150,17 @@ export default {
},
doCount() {
+ // 毫秒模式下从 33ms (≈30fps) 降到 100ms (≈10fps),肉眼仍流畅,
+ // 但 Proxy.set 频率降低 3 倍,显著降低鸿蒙 V8 GC race 概率。
+ let interval = this.millisecond ? 100 : 200;
+ // #ifdef APP-HARMONY
+ interval = this.millisecond ? 100 : 500;
+ // #endif
this.timeoutId = setTimeout(() => {
+ // 组件已销毁,直接返回,避免对已失效的 reactive 实例做 set 操作
+ // 修复鸿蒙端因 Vue3 Proxy set 已销毁对象触发 V8 SIGSEGV 崩溃
+ if (this._destroyed) return;
+
const time = this.getTime();
if (this.millisecond) {
@@ -142,10 +169,10 @@ export default {
this.updateTime(time);
}
- if (time !== 0) {
+ if (time !== 0 && !this._destroyed) {
this.doCount();
}
- }, 33); // 30 帧,因此 1000 / 30 = 33
+ }, interval);
},
},
}),
diff --git a/packages/uniapp-components/popover/_example/popover.vue b/packages/uniapp-components/popover/_example/popover.vue
index 3307f580a..e80e62f9b 100644
--- a/packages/uniapp-components/popover/_example/popover.vue
+++ b/packages/uniapp-components/popover/_example/popover.vue
@@ -2,7 +2,7 @@
-
+
diff --git a/packages/uniapp-components/popup/_example/custom-close/index.vue b/packages/uniapp-components/popup/_example/custom-close/index.vue
index c9ef8ed15..6bed4a87b 100644
--- a/packages/uniapp-components/popup/_example/custom-close/index.vue
+++ b/packages/uniapp-components/popup/_example/custom-close/index.vue
@@ -11,7 +11,7 @@
size="large"
variant="outline"
theme="primary"
- custom-style="display: block; margin-top: 32rpx"
+ custom-style="margin-top: 32rpx"
@click="handlePopup"
>
居中弹出层-带自定义关闭按钮
diff --git a/packages/uniapp-components/popup/_example/popup.vue b/packages/uniapp-components/popup/_example/popup.vue
index 5a9b227ef..5ac0c50b4 100644
--- a/packages/uniapp-components/popup/_example/popup.vue
+++ b/packages/uniapp-components/popup/_example/popup.vue
@@ -6,7 +6,7 @@
desc="由其他控件触发,屏幕滑出或弹出一块自定义内容区域。"
notice="渲染框架支持情况:Skyline、WebView"
/>
-