在 OpenHarmony(ArkUI)里做图表(自绘或三方库)出现卡顿,通常和渲染频率、组件层级、数据处理、动效实现方式有关。下面按“常见原因 → 优化手段”来说,偏实战。
setState / @State 更新@Animatable / animateTo 但每帧重绘全图❌ 不推荐:
ForEach(points, item => {
Circle({ x: item.x, y: item.y })
})
✅ 推荐:
Canvas(this.context)
.onReady(() => {
// 一次性 draw
})
几千个点用组件一定会卡,Canvas 才是正解
const step = 5
for (let i = 0; i < data.length; i += step) {
// draw
}
// worker.ts
onmessage = (e) => {
const result = compute(e.data)
postMessage(result)
}
适合:
❌ 错误:
setInterval(() => {
this.data = newData
}, 100)
✅ 正确:
LazyForEachanimateTo({ duration: 300 }, () => {
this.offsetX = newX
})
而不是:
setInterval(() => {
this.offsetX += 1
})
❌
Column {
Row {
Stack {
Canvas
}
}
}
✅
Canvas
shadowbluropacity 动画如果你愿意,可以告诉我:
我可以直接给你针对性代码模板。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。