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| | | 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默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。