1# ArkUI子系统Changelog 2 3## cl.arkui.1 在字节码HAR中通过router.getState()获取的path内容变更 4 5**访问级别** 6 7公开接口 8 9**变更原因** 10 11当开发者使用中间码HAR升级到字节码HAR时,通过router.getState()方法获取的path信息不正确。 12 13**变更影响** 14 15该变更为不兼容变更。 16 17此不兼容变更的前提是:源码HAR或者中间码HAR升级为字节码HAR时产生的不兼容。 18 19不兼容场景示例1: 20 21变更前: 22 23当开发者使用的是源码HAR时使用router.getState()方法获取的是**相对路径**。 24 25 26 27通过router.getState()方法获取的path信息为"../../../../library/src/main/ets/components/"。 28 29当开发者把源码HAR升级为字节码HAR时,通过router.getState()方法获取的path信息为"/\_\_harDefaultPagePath\_\_",不能获取正确的name和path值。 30 31 32 33变更后: 34 35当开发者把源码HAR升级为字节码HAR时使用router.getState()方法获取的是**绝对路径**。 36 37 38 39通过router.getState()方法获取的path信息为"library/src/main/ets/components/"。 40 41不兼容场景示例2: 42 43变更前: 44 45当开发者使用的是中间码HAR时使用router.getState()方法获取的是**相对路径**。 46 47 48 49通过router.getState()方法获取的path信息为"../../../../ + 哈希值 + library/src/main/ets/components/"。 50 51当开发者把中间码HAR升级为字节码HAR时,通过router.getState()方法获取的path信息为"/\_\_harDefaultPagePath\_\_",不能获取正确的name和path值。 52 53 54 55变更后: 56 57当开发者把中间码HAR升级为字节码HAR时使用router.getState()方法获取的是**绝对路径**。 58 59 60 61通过router.getState()方法获取的path信息为"library/src/main/ets/components/"。 62 63**起始API Level** 64 65API 10 66 67**变更发生版本** 68 69从OpenHarmony SDK 5.0.0.49开始 70 71**变更的接口/组件** 72 73router.getState() 74 75**适配指导** 76 77当开发者在代码中有通过router.getState()使用path值时,需要根据获取到的内容进行整改。 78 79 80## cl.arkui.2 enabled属性UX样式变更 81 82**访问级别** 83 84公开接口 85 86**变更原因** 87 88Rating组件与Slider组件enabled属性UX样式不符合规范 89 90**变更影响** 91 92该变更为不兼容变更。 93 94Rating组件变更场景: 95 96| 变更前 | 变更后 | 97|------ |--------| 98|Rating组件设置enable为false时,未叠加40%透明度。</br>|Rating组件设置enable为false时,叠加40%透明度。</br>| 99 100Slider组件变更场景: 101 102| 变更前 | 变更后 | 103|------ |--------| 104|Slider组件设置enable为false时,未叠加40%透明度。</br>|Slider组件设置enable为false时,叠加40%透明度。</br>| 105 106**起始API Level** 107 1087 109 110**变更发生版本** 111 112从OpenHarmony 5.0.0.49 版本开始。 113 114**变更的接口/组件** 115 116通用属性enabled属性。 117 118**适配指导** 119 120默认行为变更,无需适配。 121 122## cl.arkui.3 禁止在转场动画过程中,更新消失节点的属性。 123 124**访问级别** 125 126公开接口 127 128**变更原因** 129 130在转场动画过程中改变正在消失节点的属性,可能造成数据访问异常,产生crash。例如,动画过程中将data置为undefined,Text组件增加默认转场不会立即被删除,在更新状态时,数据访问异常产生crash。因此,需要变更为在转场动画过程中,禁止更新消失节点的属性。 131 132``` 133class Mydata { 134 str: string; 135 constructor(str: string) { 136 this.str = str; 137 } 138} 139@State data: Mydata|undefined = new MyData("branch"); 140if (this.data) { 141 // 对于删除时增加的默认转场,会延长组件生命周期。Text没有立即被删除,而是等转场动画结束后才被删除 142 Text(this.data.str) 143} 144Button("play with animation") 145 .onClick(()=>{ 146 animateTo({},()=>{ 147 if (this.data) { 148 // 在动画过程中,会给if下的第一层组件增加默认转场 149 this.data = undefined; 150 } 151 }) 152 }) 153 154``` 155 156**变更影响** 157 158该变更为不兼容变更。 159 160变更前:转场动画过程中,正在消失的节点可以更新属性。 161 162变更后:转场动画过程中,禁止消失的节点更新属性。 163 164**起始API Level** 165 166API 10 167 168**变更发生版本** 169 170从OpenHarmony 5.0.0.49 版本开始。 171 172**变更的接口/组件** 173 174transition属性 175 176**适配指导** 177 178如果要对转场动画过程中,消失的节点进行属性更新,应当在节点下树之前产生,而不是在消失过程中。 179 180示例: 181 182``` 183@Entry 184@Component 185struct Index { 186 @State flag: Boolean = true; 187 @State color: Color = Color.Red; 188 build() { 189 Column(){ 190 if (this.flag) { 191 Text('abc') 192 .transition(TransitionEffect.OPACITY) 193 .backgroundColor(this.color) 194 } 195 196 Button("play with animation") 197 .onClick(()=>{ 198 // 变更前,消失过程中的节点可以更新属性,Text组件的颜色在消失过程中变为蓝色 199 // animateTo({},()=>{ 200 // this.flag ? this.color = Color.Blue : this.color = Color.Red; 201 // this.flag = !this.flag; 202 // }) 203 204 // 变更后,消失过程中的节点无法更新属性,Text组件的颜色在消失过程中一直为红色 205 // 如果需要更新属性,使Text组件的颜色在消失过程中变为蓝色,应当在节点下树之前更新 206 animateTo({},()=>{ 207 this.flag ? this.color = Color.Blue : this.color = Color.Red; 208 }) // 节点下树前改变颜色属性 209 animateTo({},()=>{ 210 this.flag = !this.flag; 211 }) 212 }) 213 .width("100%") 214 .padding(10) 215 } 216 } 217} 218``` 219 220## cl.arkui.4 Tabs组件barOverlap接口默认效果变更 221 222**访问级别** 223 224公开接口 225 226**变更原因** 227 228优化Tabs组件barOverlap属性设置为true时,TabBar的模糊效果和渲染性能。 229 230**变更影响** 231 232该变更为不兼容变更。 233 234变更前:设置barOverlap属性为true时,TabBar默认背景色修改为'#F2F1F3F5'并添加模糊效果。 235 236变更后:设置barOverlap属性为true时,TabBar默认模糊材质的BlurStyle值修改为'BlurStyle.COMPONENT_THICK'。 237 238| 变更前 | 变更后 | 239|------ |--------| 240||| 241 242**起始API Level** 243 244API 10 245 246**变更发生版本** 247 248从OpenHarmony 5.0.0.49 版本开始。 249 250**变更的接口/组件** 251 252barOverlap接口 253 254**适配指导** 255 256当barOverlap设置为true时,开发者若期望无模糊效果,设置barBackgroundBlurStyle为BlurStyle.NONE。示例如下: 257 258```ts 259@Entry 260@Component 261struct barHeightTest { 262 @State arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 263 build() { 264 Column() { 265 Tabs({ barPosition: BarPosition.End }) { 266 TabContent() { 267 Column() { 268 List({ space: 10 }) { 269 ForEach(this.arr, (item: number) => { 270 ListItem() { 271 Text("item" + item).width('80%').height(200).fontSize(16).textAlign(TextAlign.Center).backgroundColor('#fff8b81e') 272 } 273 }, (item: string) => item) 274 }.width('100%').height('100%') 275 .lanes(2).alignListItem(ListItemAlign.Center) 276 }.width('100%').height('100%') 277 .backgroundColor(Color.Pink) 278 } 279 .tabBar(new BottomTabBarStyle($r('sys.media.ohos_icon_mask_svg'), "测试0")) 280 281 TabContent() { 282 Column() { 283 List({ space: 10 }) { 284 ForEach(this.arr, (item: number) => { 285 ListItem() { 286 Text("item" + item).width('80%').height(200).fontSize(16).textAlign(TextAlign.Center).backgroundColor('#fff8b81e') 287 } 288 }, (item: string) => item) 289 }.width('100%').height('100%') 290 .lanes(2).alignListItem(ListItemAlign.Center) 291 }.width('100%').height('100%') 292 .backgroundColor(Color.Blue) 293 } 294 .tabBar(new BottomTabBarStyle($r('sys.media.ohos_icon_mask_svg'), "测试1")) 295 } 296 .barOverlap(true) 297 .barBackgroundBlurStyle(BlurStyle.NONE) // 关闭TabBar模糊效果 298 } 299 } 300} 301```