ArkTs-@Builder引用传递问题

问题场景

在page页中,定义了@State status;在实现时发现,将status传入builder,并不能触发改变时的更新。

问题定位

打日志发现,没有发生修改;通过查询资料:

@Builder装饰器:自定义构建函数 ----- 按引用传递参数
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5

参数分为按引用传递参数和按值传递两种,按引用传入需要将变量命名为$$。

而status没有办法当作引用传入:

Property ‘status’ cannot initialize using ‘$’ to create a reference to a variable.

解决方案

将page整体作为引用变量传入,通过page去取需要的其他参数。

    @State status: Status = Status.XXX;

    DemoView({
        customUI: () => {
           this.poiList(this); // 此处传入page
        },
        ...
        panelStatus: this.panelStatus, // @Link,实现双向修改
        ...
    })


        @Builder
        poiList(page: DemoPage) {
            Column() {
                List() {
                    ListItem() {
                        XxxHeader({
                            bean: Bean,
                            status: Status // 获取status
                        });
                    }
                    ...
                }
                ...
            }
        }

posted @ 2025-01-04 14:19  jio-deng  阅读(99)  评论(0)    收藏  举报  来源