#夏日挑战赛#ArkUI常见问题汇总【系列3】 原创

坚果的小跟班
发布于 2022-7-18 10:09
浏览
1收藏

「本文正在参加星光计划3.0–夏日挑战赛」

中午写完之后大家很喜欢,这不,第三期来了。

问题1.aboutToAppear和onAppear的区别?

aboutToAppear:是被@Component修饰自定义组件的生命周期方法,函数在创建自定义组件的新实例后,在执行其build函数之前执行。

onAppear:是每个组件的属性方法,在该组件显示时触发此回调。

eTS里面object类型有办法更新吗?

lis:Array<object> = [
  {
    'id': 0,
    'name': '计划',
    'image': $rawfile('index/ic_public_view_list_filled2.png'),
    'number':0
  },
this.lis['0'].name = 1

然后用这种方式更新前端不会跟着更新,文档里面看到有@State装饰,但是不支持object类型,有其他方式解决吗?
其实也是支持object类型的,也可以用下面的这种。

“number”最好不要作为属性,因为“number”是字段类型。Object请改为class,示例代码如下:

@Observed export class xxx {

 id: number;

 name: string;

 image: string;

 number: number;

 constructor(id: number, name: string, image:string,number:number) {

  this.id = id;

  this.name = name;

  this.image = name;

  this.number = number;

 }

}

lis: Array<xxx> = [{

   'id': 0,

   'name': '计划',

   'image': xxx,

   'number': 0

}]

this.lis[0].name='new Name'

问题2.ets 的【TextArea】组件如何做到清空操作?

@State text: string = 'test'
TextArea({ placeholder: this.text })
//...
Button().onClick((value: string) => {
          this.text = ''
        })

问题3.怎么获取鸿蒙系统的小时制

可以使用DateFormatUtil.is24HourClock方法。

问题4.使用ArkUI开发的App能在安卓设备上安装吗?

不可以。HarmonyOS的应用只能运行在鸿蒙系统里。鸿蒙系统能运行HarmonyOS的应用和安卓应用。但是安卓系统只能运行安卓应用。

问题5.如何实现遮罩效果

使用onTouch实现按下抬起事件,.mask()实现遮罩的效果。代码如下:

@Entry
@Component
struct Index {
  @State mask:boolean=false
  build() {
    Column() {
      Image('/comment/bg.jpg')
        .mask(this.mask?new Rect({ width: '500px', height: '280px' }).fill(Color.Gray):null)
        .width('500px').height('280px')
        .onTouch((event: TouchEvent) => {
          switch(event.type){
            case TouchType.Down:
              this.mask=true
              break;
            case TouchType.Up:
              this.mask=false
              break;
          }
        })
    }.width('100%').margin({ top: 5 })
  }
}

问题6.ets声明式ui开发,怎么获取当前系统时间

在这里,我们将字符串用@state包裹,这样可以监听数据的更新

我们给Text绑定点击时间,然后点击,即可显示当前时间,下面是效果。

#夏日挑战赛#ArkUI常见问题汇总【系列3】-鸿蒙开发者社区

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold).onClick(()=>{
          let date = new Date()

//获取当前时间
//          this.message=date.toLocaleString();
          //周几
//          this.message=date.getUTCDay().toString();

//日期
//          this.message=date.getUTCDate().toString();
//          //农历月份
//          this.message=date.getUTCMonth().toString();


          this.message=date.getFullYear() + "年" + (date.getMonth() + 1) + "月" + date.getDate() + "日" + date.getHours() + "时" + date.getMinutes() + "分" + date.getSeconds()+ "秒"


        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
3
收藏 1
回复
举报
1条回复
按时间正序
/
按时间倒序
程序员法医
程序员法医

绝世好文,前排留名🤙🤙🤙

回复
2022-7-21 16:13:48
回复
    相关推荐