鸿蒙开发基础6-组件的事件点击和属性的状态管理
点击事件
如果我们想点击某个组件的同事 给他一个点击事件 我们只需要给他添加一个onclick的点击事件就可以了
同时 我们一般会申明一个全局的状态管理 以便随时可以更新这个和获取这个值 我们可以通过关键字 @State 来修饰 在使用的地方用 this.属性 来调用就可以达到效果了
@Entry
@Component
struct Count {
@State name: string = '你好啊'
build() {
Column() {
Text(this.name)
.onClick(() => {
this.name += '增加我啊'
AlertDialog.show({
message: this.name
})
})
}
}
}
数据的单项绑定和双向绑定
如果子组件需要跟父组件同步属性状态 那么子组件里面需要用到 @Prop 进行修饰即可
但是@Prop 是单项传递是 只能是父组件往子组件传递 但是@Link是双向绑定 可以相互传递信息


跨组件同步数据
// 父组件
@Provide themeColor: string = ''
// 子组件
@Consume themeColor1: string状态管理
状态管理里面有一个比较重要的是条件状态管理 if 条件语句,简单的说 就是通过不同条件下 动态的调整组件的各种属性状态 看一段代码
// 先定义个全局的状态属性
@State isShowText: boolean = false// 定义个单独的区域 然后添加一个文本和一个按钮
Column() {
if (this.isShowText) {
Text('需要显示,所以我在了')
.textMediumExtend(Color.Orange, 35) // 为组件的扩展属性 后面会讲到
} else {
Text('需要隐藏,所以我在了')
.textMediumExtend(Color.Orange, 35)
}
Button('点击我 操作文字隐藏与显示').onClick((event: ClickEvent) => {
this.isShowText = !this.isShowText
})
}
.width('100%')
.height(300)
.margin({ top: 30})
.backgroundColor(Color.Gray)
数据嵌套更新
上面所提到的更新数据的方案 默认最多只能更新第一层级的数据 对于多级数据 深层的数据更新则无法进行同步更新 这个属性就是为了这个问题


组件扩展
// 组件扩展
@Extend(Text)
function textMediumExtend(color: Color, fontSize: number) {
.backgroundColor(color)
.fontSize(fontSize)
.width('100%')
.height(60)
.margin({top: 16})
}运行代码 就可以看到下面的界面效果了


另外说一下switch的条件判断
switch (this.count) {
case 1: // 条件1
case 2: // 条件2
default: // 默认情况
}
本文是原创文章,完整转载请注明来自 MrXiao's Blog
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果