今日任务
- 剖析@Builder装饰器
修真前言
今日的阳光净化着昨日雨后的污垢,所谓早起的鸟儿被虫吃,咳咳开玩笑,正篇开始,昨日的修炼让我筑基期下级基本圆满,完成今日的修炼,就能够突破至筑基期中级初期,叮~弹窗提示,今日猎杀一只小巴嘎取其腿骨制作手持武器,这让我的脑域中又开辟了一个空间,美名其曰就是武器库,提示也展示出对应的猎杀地图,对于猎杀小巴嘎我邪魅一笑,***干!………………
介绍
@Builder装饰器
- 上一篇说到创建自定义组件,仅时UI方面结构固定,然后提供给使用方消费,传递数据等操作,除了这个方式,官方还提供了所谓更轻量的UI结构方式,专业的昵称就是“自定义构建函数”,规定遵循build()函数下UI的规则,我们可以将日常重复的UI结构抽成一个个Builder函数供在build()中使用。
构建方式
自定义组件内自定义构建函数
官方讲解:
全局自定义构建函数
官方讲解:
个人见解:
在日常的开发中我们只需要重点关注当前业务是否能够用这个装饰器特性满足需求,例如当我们要自定义一个Tabs的时候一般会初始化一个数据列表,然后在build()里面去遍历每个数据项,然后在循环里面去传入我们封好的Builder,并且传入每项的数据以及活动的Index做切换的判断,像这种没有状态修改的我们遵循官方的推荐写全局的即可,当我们需要在Builder里面去修改状态的时候就需要用到this去获取这个组件实列下定义好的一些状态变量,所以这个时候我们就采用组件内定义的方式即可。
参数传递
官方讲解:
按引用传递参数:按引用传递参数时,传递的参数可为状态变量,且状态变量的改变会引起@Builder方法内的UI刷新。
官方链接demo:developer.huawei.com/consumer/cn…
调用场景:使用时传递一个对象对应一个class(例如 TestBuilder( { this.testData } ))
1、按引用传递参数时,如果在@Builder方法内调用 @Component ,ArkUI提供 $$ 作为按引用传递参数的范式。
2、按引用传递参数时,如果在 @Builder 方法内调用 @Component 或者其他 @Builder 方法,ArkUI也是提供 $$ 作为按引用传递参数的范式。
按值传递参数:调用@Builder装饰的函数默认按值传递。当传递的参数为状态变量时,状态变量的改变不会引起@Builder方法内的UI刷新。所以当使用状态变量的时候,推荐使用按引用传递。
官方链接demo:developer.huawei.com/consumer/cn…
调用场景:使用时传递一个对应的变量数据即可(例如 TestBuilder(this.testData))
修真结束
周围残肢乱舞,鲜血飞溅,击杀小巴嘎的快感估计只有身为本土读者的你才知道多么畅快,榨干最后一丝法则之力终于击杀小巴嘎领主,名为巴嘎亚罗,在我多次一库的情况下终于卸下了它的两条汪腿,拖着疲惫的身躯,扛着战利品回到了洞穴,一阵阵的困意无法在让我动弹,终于还是敌不过我梦中的情人,篇外:年轻人真好,倒头就睡,天色也已经暗淡,我也去了梦中在寻找那个她………………