【HarmonyOS NEXT】FAQ之应用框架(ArkUI-15)

1、如何合并两个列表并支持懒加载

整个外层布局是一个Scroll,内层布局有两个List,上面是ListA,下面的是ListB,分别采取LazyForEach的方式加载数据,并且给ListA和ListB绑定nestedScroll属性。

2、如何设置镜像语言的左右间距

margin,padding提供外边距类型LocalizedMargin和LocalizedPadding,可用于设置不同外边距和内边距。

3、如何实现Scroll、List单边回弹效果
  • Scroll组件:在onDidScroll里获取currentOffset().yOffset来控制单边回弹效果;

  • List组件:可以在onDidScroll里获取currentOffset().yOffset来控制,还可以通过onScrollIndex实现单边回弹效果。

4、RelativeContainer组件height设置为auto,子组件以容器作为锚点,为什么auto不生效

是为了避免二次布局导致过大的性能开销,给高度标记了auto之后,在垂直方向上,RelativeContainer会依赖组件间在垂直方向上的布局这样会导致二次布局,因为子组件此时是相对容器的垂直方向上的布局,那这个时候,父组件的布局又要依赖子组件布局之后的结果再次进行布局。

5、如何设置禁止分屏

可以通过在module.json5配置文件中abilities标签下的supportWindowMode属性设置“fullscreen”字段。

6、如何解决滚动类容器的滚动事件和手势之间的冲突

可以通过添加并行手势绑定方法parallelGesture来处理

7、如何使用WaterFlow实现跨列布局效果

可以通过设置WaterFlow组件接口参数options,对FlowItem进行分组,实现同一个瀑布流组件内各个分组使用不同的列数。

8、如何在Text组件关闭bindSelection自定义菜单时,取消文本的选中状态

Text组件绑定bindSelectionMenu自定义菜单,长按弹出自定义菜单,使用closeSelectionMenu关闭自定义菜单,文本选中状态不会取消。

该场景下要取消选中状态可以使用selection重新设置选中区域,在调用closeSelectionMenu关闭自定义菜单时重新设置selection的start、end即可取消选中状态。

9、WaterFlow、Grid、List这些容器的使用区别是什么?
  • WaterFlow适用于展示多列,各子组件高度参差不齐,需要不停滑动加载的布局场景。

  • Grid适用于网格布局,使用List的lanes属性,也能实现类似网格布局的效果,但是Grid组件对item的拖拽支持更好。

  • List适用于相同列宽,需要连续,多行呈现的列表布局场景。

10、如何在Navigation中使用LocalStorage

LocalStorage的实例仅在一个@Entry装饰的组件和其所属的子组件(一个页面)中共享,可以借助LocalStorage相关的两个装饰器@LocalStorageProp和@LocalStorageLink,在UI组件内部获取到LocalStorage实例中存储的状态变量,具体可参考UI内部使用LocalStorage。

11、如何处理ForEach第三个参数键值生成耗时久导致的卡顿问题

针对ForEach耗时影响性能,需要注意键值生成规则。

使用ForEach渲染时第三个参数KeyGenerator函数如果处于缺省状态,ArkUI框架会使用默认的键值生成函数,即(item: any, index: number) => { return index + '__' + JSON.stringify(item); },在数据复杂的对象集合和复杂的交互中,会影响渲染性能。为满足键值的唯一性,对于对象数据类型,建议使用对象数据中的唯一id作为键值。不推荐将第三个参数KeyGenerator函数处于缺省状态,以及在键值生成规则中包含数据项索引index。

12、Tab组件页面切换时,如何不显示中间过渡的tab页

如果需要做动画,规格上是一定要从1,2,3,4进行运动的,如果不想显示中间过渡页,可以通过设置animationDuration(0)。

13、LocalStorage频繁读写复杂对象时性能变差原因是什么

LocalStorage的读写操作是同步的,即当读取或写入LocalStorage时,程序会阻塞等待操作完成才会继续执行后续代码,所以不推荐频繁修改复杂对象。

更多详情查看:文档中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值