#夏日挑战赛#ArkUI常见问题汇总【系列3】 原创
早起睡不够
发布于 2022-7-18 10:09
浏览
1收藏
中午写完之后大家很喜欢,这不,第三期来了。
问题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绑定点击时间,然后点击,即可显示当前时间,下面是效果。
@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
回复
相关推荐
绝世好文,前排留名🤙🤙🤙