1# ArkUI子系统Changelog
2
3## cl.arkui.1 使用局部@Builder方法引用传参时,使用bind(this)后,状态管理的父子关系和组件的父子关系不一致,比如使用@ohos.arkui.advanced.ChipGroup高级组件崩溃解决方法
4
5**访问级别**
6
7公开接口
8
9**变更原因**
10
11开发者使用局部@Builder方法引用传参时,使用bind(this)后,在使用 @Provide和@Consume时状态管理的父子关系和组件的父子关系不一致。运行时报错:
12
13```
14@Component 'MyComponent2'[11] missing @Provide property with name value.Fail to resolve @Consume(value).
15```
16
17**变更影响**
18
19该变更为不兼容性变更。开发者使用局部@Builder方法引用传参时,使用bind(this)后,状态管理的父子关系和组件的父子关系不一致,涉及高级组件[@ohos.arkui.advanced.ChipGroup (操作块组组件)](../../../application-dev/reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ChipGroup.md)在内的使用局部@Builder且使用@Builder函数处使用bind(this)的一些自定义组件。
20
21**起始API Level**
22
2312
24
25**变更发生版本**
26
27从OpenHarmony SDK 5.0.0.34开始。
28
29**变更的接口/组件**
30
31[@ohos.arkui.advanced.ChipGroup (操作块组组件)](../../../application-dev/reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ChipGroup.md)
32
33**适配指导**
34
35将原来的局部@Builder变成@LocalBuilder。
36
37变更前:
38
39```ts
40@Component
41struct MyComponent {
42  @Provide("value") value: number = 10;
43  @BuilderParam content: () => void;
44
45  build() {
46    Column() {
47      this.content();
48    }
49  }
50}
51
52@Component
53struct MyComponent2 {
54  @Consume("value") value: number;
55
56  build() {
57    Text(`${this.value}`)
58  }
59}
60
61@Entry
62@Component
63struct Index {
64  @State stateValue: string = '';
65
66  @Builder
67  content() {
68    MyComponent2()
69  }
70
71  build() {
72    Column() {
73      MyComponent({
74        content: this.content.bind(this)
75      })
76    }
77  }
78}
79```
80
81变更后:
82
83```   ts
84@Component
85struct MyComponent {
86  @Provide("value") value: number = 10;
87  @BuilderParam content: () => void;
88
89  build() {
90    Column() {
91      this.content();
92    }
93  }
94}
95
96@Component
97struct MyComponent2 {
98  @Consume("value") value: number;
99
100  build() {
101    Text(`${this.value}`)
102  }
103}
104
105@Entry
106@Component
107struct Index {
108  @State stateValue: string = '';
109// 将 @Builder 改成@LocalBuilder
110  @LocalBuilder
111  content() {
112    MyComponent2()
113  }
114
115  build() {
116    Column() {
117      // 去掉bind(this)
118      MyComponent({
119        content: this.content
120      })
121    }
122  }
123}
124```
125
126## cl.arkui.3  半模态挡位内容经过开发者动态改变后,挡位索引默认为0
127
128**访问级别**
129
130公开接口
131
132**变更原因**
133
134为解决半模态拖动到悬浮窗时半模态需保持拖拽后的挡位,引入该体验问题,需要修复引入的问题。
135
136**变更影响**
137
138该变更为不兼容变更。
139
140变更前:半模态经过手指拖拽并且在开发者动态改变挡位后,因挡位索引保持为手指拖拽的索引,半模态刷新成新挡位数组对应索引的高度。
141
142变更后:半模态挡位内容在开发者动态改变后,挡位索引标记为0,半模态刷新成开发者设的新挡位数组第一位的高度。
143
144| 变更前(点击Button) | 变更后(点击Button) |
145|---------|---------|
146| ![pre](sheetDetentsBefore.gif)| ![current](sheetDetentsAfter.gif)|
147
148**起始API Level**
149
15010
151
152**变更发生版本**
153
154从OpenHarmony SDK 5.0.0.34开始。
155
156**变更的接口/组件**
157
158detents接口/BindSheet组件
159
160**适配指导**
161
162默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。