HarmonyOS鸿蒙Next最佳实践之优先使用@Builder方法代替@Component组件
HarmonyOS鸿蒙Next最佳实践之优先使用@Builder方法代替@Component组件
前言
大家好,我是青蓝逐码组织的君莫笑。 今天给大家分享鸿蒙中最佳实践的知识点,优先使用@Builder代替@Component组件。
为什么我们要用@Builder代替@Component组件?
我们在实际开发中,大多数还是使用@Component来进行组件封装复用,因为其拓展性好,还能直接在内部修改状态变量,并且功能也比@Builder强大,拥有其没有的组件生命周期,那我们为什么还是推荐用@Builder代替@Component组件呢? 这里直接甩出官网的说明
其中的大意说白了就是用@Builder代替@Component组件能够去减少节点树。
因此,在应用开发时,减少自定义组件的使用,尤其是自定义组件在循环中的使用,将成倍减少FrameNode节点树上CustomNode节点数量,有效缩短页面的加载和渲染时长。当在应用中使用自定义组件时,可以优先考虑使用@Builder函数代替自定义组件,@Builder函数不会在后端FrameNode节点树上创建一个新的树节点(抄的官网的)
实验例子
我们通过官网给出的实验结论不难看出@Builder方法确实比@Component组件性能更好
结论
虽然@Builder比@Component组件性能更好,但是我们在实际开发中还是要根据场景来选择对应的方案,毕竟@Builder有着一些限制条件。
限制条件
- @Builder装饰的函数内部,不允许修改参数值,否则框架会抛出运行时错误。开发者可以在调用@Builder的自定义组件里改变其参数。请参考[在@Builder装饰的函数内部修改入参内容](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-builder#在builder装饰的函数内部修改入参内容)。
- @Builder通过按引用传递的方式传入参数,才会触发动态渲染UI,并且参数只能是一个。请参考按引用传递参数。
- @Builder如果传入的参数是两个或两个以上,不会触发动态渲染UI。请参考[@Builder存在两个或者两个以上参数](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-builder#builder存在两个或者两个以上参数)。
- @Builder传入的参数中同时包含按值传递和按引用传递两种方式,不会触发动态渲染UI。请参考[@Builder存在两个或者两个以上参数](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-builder#builder存在两个或者两个以上参数)。
- @Builder的参数必须按照对象字面量的形式,把所需要的属性一一传入,才会触发动态渲染UI。请参考[@Builder存在两个或者两个以上参数](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-builder#builder存在两个或者两个以上参数)。
总结
因此如果你的数据需要进行状态变量的改变,并且类型不是复杂类型、参数不止一个,那么不建议使用@Builder方法进行复用了。
所以只有在你的数据不需要二次改变的情况下,使用@Builder方法代替@Component组件对性能更好!一些轻量级的封装组件(纯UI,无数据变化)以及不需要修改数据的组件就可以优化为@Builder方法。
最后
以上就是本次分享给大家的一些教学了,如果这个文章对你有帮助,恳请三连。
青蓝逐码组织官网的服务器申请和域名在申请中,有结果了会第一时间分享我们的组织,后续我会持续分享一些实际项目遇到的难题解决方案以及最佳实践解析,希望大家多多关注哦!
更多关于HarmonyOS鸿蒙Next最佳实践之优先使用@Builder方法代替@Component组件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,推荐使用@Builder方法代替@Component组件,以提升代码复用性和灵活性。@Builder方法通过函数式编程方式定义UI组件,减少冗余代码,优化性能。相比@Component,@Builder更轻量,适合构建复杂UI结构,降低组件间耦合度,便于维护和扩展。
更多关于HarmonyOS鸿蒙Next最佳实践之优先使用@Builder方法代替@Component组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个很好的HarmonyOS开发实践分享!确实在性能优化方面,@Builder相比@Component有显著优势。主要区别在于:
-
节点树方面:@Builder不会创建新的CustomNode节点,而@Component会,这在循环渲染时性能差异会更明显
-
使用场景:
- 适合@Builder:纯UI展示、轻量级复用、不需要状态管理的组件
- 适合@Component:需要生命周期、状态管理、复杂交互的组件
- 参数传递限制是使用@Builder时最需要注意的点,特别是动态渲染UI的条件比较严格
实际开发中确实应该根据具体场景选择,对于简单的UI复用,优先考虑@Builder可以带来不错的性能提升。感谢分享这个实践案例!