HarmonyOS 鸿蒙Next Repeat新增Item出现onVisibleAreaChange事件失效
HarmonyOS 鸿蒙Next Repeat新增Item出现onVisibleAreaChange事件失效
@Component struct TestPage { pathStack: NavPathStack = new NavPathStack() @State arr: string[] = [“a”, “b”, “c”, “d”, “e”, “f”]
build() { NavDestination() { CustomTitleBar({ title: “Test”, navStack: this.pathStack }) CustomBodyView() { Button(“Add”) .onClick(() => { this.arr.push(“Add”) }) List() { Repeat(this.arr) .each((data) => { ListItem() { Text(data.item) .margin(20) .width(“100%”) .fontSize(20) .onVisibleAreaChange([0.0, 1.0], () => { Logger.info(“TestPage”, "onAreaChange " + data.item) }) } }).key((item, index) => item + index) } .width(“100%”) .layoutWeight(1) } } .backgroundColor($r(“app.color.main_window_background”)) .hideTitleBar(true) .onReady((context: NavDestinationContext) => { this.pathStack = context.pathStack }) } }
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
如上面的代码中,arr初始化的元素在滚动过程中都能触发onVisibleAreaChange打印日志,新增的Item不会触发,监听ListItem也是。改用foreach渲染列表就没有问题
更多关于HarmonyOS 鸿蒙Next Repeat新增Item出现onVisibleAreaChange事件失效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
Repeat从API version 12开始支持。
当前状态管理(V2试用版)仍在逐步开发中,相关功能尚未成熟,建议开发者尝鲜试用。
·~~~~~
不过这个是子组件复用的,本身的高度自己计算下咯,肯定所有的大小都一样的
更多关于HarmonyOS 鸿蒙Next Repeat新增Item出现onVisibleAreaChange事件失效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
额,使用onVisibleAreaChange不是为了获取高度,是为了监听子组件是否完全显示
直接上@Component啊 然后这个不就是build完成了的回调 onDidBuild(): void { }
针对HarmonyOS 鸿蒙Next中Repeat组件新增Item时onVisibleAreaChange事件失效的问题,这通常是由于状态更新与事件绑定机制之间的交互问题导致的。以下是一些可能的原因及解决思路:
-
事件绑定问题:确保onVisibleAreaChange事件已正确绑定到每个ListItem上。由于Repeat组件在动态添加项目时可能会复用子组件实例,需要确保事件处理器能够正确响应新添加的项目。
-
状态更新:在动态添加项目到数组后,可能需要手动触发UI的重新渲染或更新。检查是否有必要的状态更新或调用导致UI刷新的方法。
-
API版本与特性支持:确认你的HarmonyOS版本是否支持Repeat组件及onVisibleAreaChange事件的全部特性。从API Version 12开始,Repeat组件和onVisibleAreaChange事件得到了较好的支持,但早期版本可能存在限制。
-
代码逻辑检查:仔细检查相关代码逻辑,确保没有逻辑错误导致事件处理函数未能正确执行。特别是检查事件处理函数中的条件判断是否满足预期。
-
性能与优化:考虑是否有性能问题或优化措施影响了事件的触发。例如,过度使用异步操作或复杂的计算可能会影响事件响应的及时性。
如果以上方法均无法解决问题,建议深入阅读HarmonyOS官方文档或查找相关社区和论坛的讨论,以获取更具体的解决方案。如果问题依旧没法解决,请联系官网客服:https://www.itying.com/category-93-b0.html