回复
#jitoa #关于OpenHarmony数据的双向绑定 原创
忙忙忙困困困
发布于 2023-12-20 12:35
浏览
0收藏
本博客由 金陵科技学院-开放原子开源社 徐晨璐编写
举一个典型例子,银行小偷
struct CountDownBtn{
@Prop pCount:number
build(){
Button(`我是银行黑色,我偷一块钱.还剩${this.pCount}元.`)
.onClick(()=>{
this.pCount-=1
})
}
}
@Entry
@Component
struct Third {
@State count:number =100
build() {
Row() {
Column({space:10}) {
Text(`您的账户余额还有${this.count}元`)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button("我买10块钱的东西")
.onClick(()=>{
this.count-=10
})
CountDownBtn({
pCount: this.count
})
}
.width('100%')
}
.height('100%')
}
}
展示效果
在这个代码中,当点击"我买10块钱的东西"时,则会出现以下页面
当点击"我是银行黑色,我偷一块钱,还剩100元",则会出现以下页面
大家从上图可以发现,小偷偷了钱以后,账户里的钱并没有发生改变,所以到底是什么原因呢?
其实是@prop在起作用
在这里,@Prop的作用仅仅传播属性,仅接受,但不改变。
this.pCount-=1 这条语句也只对组件内部有效
接下来让我们看看另一个代码
struct CountDownBtn{
@Link iCount:number
build(){
Button(`我是银行黑色,我偷一块钱.还剩${this.iCount}元.`)
.onClick(()=>{
this.iCount-=1
})
}
}
@Entry
@Component
struct Third {
@State count:number =100
build() {
Row() {
Column({space:10}) {
Text(`您的账户余额还有${this.count}元`)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button("我买10块钱的东西")
.onClick(()=>{
this.count-=10
})
CountDownBtn({
iCount: $count
})
}
.width('100%')
}
.height('100%').padding(10)
}
}
展示效果
在这个代码中,当点击"我买10块钱的东西"时,则会出现以下页面
当点击"我是银行黑色,我偷一块钱,还剩100元",则会出现以下页面
大家从上图可以发现,小偷偷了钱以后,账户里的钱就随之发生了改变
在这里,@Link是与上级联动,点击后,this.iCout-=-1联动生效
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
已于2023-12-20 12:36:46修改
赞
4
收藏
回复
相关推荐