关于HarmonyOS 鸿蒙Next V2的使用效果不正常

关于HarmonyOS 鸿蒙Next V2的使用效果不正常 场景:存在一个@observedV2类CS,CS包含一个@trace属性sj,页面中用@param装饰CS类实例kk,1是文本框用于显示文本的变化且绑定kk.sj,2、3是下拉选择框,2通过!!绑定kk.sj3通过$$绑定kk.sj。!!与$$都是双向绑定,2、3一个变化,那么3个组件应该都会同步。实际当2改变时,1、3没有同步,但是3改变时,1、2同步了。当没有3组件时,即只有!!的情况时,1也不会同步变化。通过shift + F6对变量名重构时,使用!!的地方可以同步重构,使用$$的地方不会同步重构。

DEMO截图如下:

cke_384.png

想知道是我理解不正确,还是确实就是这样的同步效果呢?还是select没有支持!!同步呢?我的理解,!!与$$的同步效果应该是一致的。

官方文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-new-binding-V5

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-two-way-sync-V5

DEMO代码如下:

import { hilog } from '@kit.PerformanceAnalysisKit';
import { router } from '@kit.ArkUI';

@Entry
@ComponentV2
struct CSdestroy {
  @Local message: string = 'Hello World';
  @Param kk:cs = new cs();

  aboutToDisappear(): void {
    hilog.info(3,'声明周期destroy','执行销毁')
  }

  aboutToAppear(): void {
    hilog.info(3,'声明周期destroy','页面显示')
  }

  build() {
    Column () {
      Text(this.kk.sj)
        .id('CSdestroyHelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .height(50)
        .width('100%')
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })

      Select([{value:'A'},{value:'B'},{value:'C'}])
        .height(50)
        .width('50%')
        .value(this.kk.sj!!)

      Select([{value:'1'},{value:'2'},{value:'3'}])
        .height(50)
        .width('50%')
        .value($$this.kk.sj)

      Button('返回')
        .height(50)
        .width("50%")
        .onClick(() => {
          router.back();
        })
    }
    .height('100%')
    .width('100%')
  }
}

@ObservedV2
class cs{
  @Trace sj:string = '';
}

更多关于关于HarmonyOS 鸿蒙Next V2的使用效果不正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

$$语法:内置组件双向同步,!!既支持内置的也支持自定义的,但是!!不是简单写上!!就叫双向绑定语法了,认真看官方文档。链接你自己都发出来了,认认真真看懂它。

更多关于关于HarmonyOS 鸿蒙Next V2的使用效果不正常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


好的,我再去看看,但是对于<select>内置组件的value属性,不知道是哪里出了问题,在写法上需要注意什么,,

老弟啊,首先你要明白select它没有!!的Event, 你要么就自定义select 然后自定义Event,这样是方便扩展。对于内置组件,像select你直接在onSelect赋值给@Param的对象就可以了。至于$$能实现是因为它限定相关的内置组件,底层它们有共同的接口和实现了相关的逻辑。双向绑定还有很多种实现方式的,不纠结。V1的@Link @Observed@ObjectLink,V2的@Provider @Consumer,当然你也可以不用它们的,自己用回调、闭包之类的实现。

好的谢谢,因为@param是代理过的对象,所以我在测试能否通过双向绑定,直接和原始对象同步。

关于HarmonyOS 鸿蒙Next V2使用效果不正常的问题,可能涉及多个方面,包括但不限于系统稳定性、应用兼容性、硬件适配性等。以下是一些可能的解决方案概述,专注于鸿蒙系统本身,不涉及Java或C语言内容:

  1. 系统更新:首先确认设备是否已安装最新的鸿蒙系统更新。系统更新通常包含对已知问题的修复和性能改进。

  2. 应用兼容性:检查出现问题的应用是否与鸿蒙Next V2系统兼容。部分第三方应用可能尚未完全适配新版本系统,导致运行异常。

  3. 硬件检查:确认设备硬件是否支持鸿蒙Next V2系统的所有功能。硬件限制可能导致部分系统功能无法正常使用。

  4. 系统恢复:如果问题持续存在,考虑进行系统恢复或重置。这将清除所有用户数据并恢复到出厂设置,可能解决因系统配置错误导致的问题。

  5. 反馈问题:如果上述步骤未能解决问题,建议通过华为官方渠道反馈问题。华为可能会根据反馈进行进一步的调查和优化。

请注意,以上解决方案可能因设备型号、系统版本等因素而有所不同。如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部