欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍

鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍

2025/2/6 15:09:07 来源:https://blog.csdn.net/Yihong1833100198/article/details/145445989  浏览:    关键词:鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍

鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍

1.1 双向数据绑定概念

在鸿蒙(HarmonyOS)应用开发中,双向数据改变(或双向数据绑定)是一种让数据·模型和UI组件之间保持同步的机制,当数据发生变化时,UI自动更新;反之,当用于通过UI代码操作修改数据时,数据模型也会同步更新,这种机制简化了开发,减少了手动DOM或UI组件的代码量,举个简单的例子,比如输入框和变量的绑定,用户输入变量更新,变量在其他地方修改时输入框的内容也发生变化

1.2双向数据绑定步骤

  1. @State装饰器修饰数据
  2. 通过@onchange事件去收集改变的值,并将新值赋值给原来变量,达到数据改变

image-20250204215640443

1.3案例演示

  • 代码演示
@Entry
@Component
struct Test1 {@State userName: string = '小程神'build() {Column({ space: 20 }) {Text('通过onChange收集inputValue')TextInput().border({color: Color.Black,width: 1}).onChange((value) => {this.userName = value})Text('展示inputvalue')TextInput({ text: this.userName }).border({width: 1,color: Color.Black})}.height('100%').width('100%').padding(20)}
}
  • 效果展示

img

  • 总结
    1. 数据发生变化 绑定text的值 –>视图产生更新
    2. 视图产生事件 onChange事件 –>数据发生变化

1.4MVVM:$$语法糖

通过上述的onChange事件改变数据,其实还有更为简便的一种方式可以实现双向数据绑定

官方文档上提供了以下组件实现双向数据绑定的快捷方法

image-20250204220418730

1.4.1案例演示

  1. textInput演示
  • 代码展示
@Entry
@Component
struct Test2 {@State message: string = 'Hello World';build() {Column({ space: 10 }) {Text(this.message)TextInput({ text: $$this.message })Button('改变数据').onClick(() => {this.message = '我的小猫暴脾气'})}.width('100%').height('100%').padding(20)}
}
  • 效果展示

img

  1. checkBox展示
  • 代码展示
    Text(this.ischecked+'')Checkbox().select($$this.ischecked)
  • 效果展示

img

  1. Toggle展示
  • 代码展示
      Text(this.isOn + '')Toggle({type: ToggleType.Switch,isOn: $$this.isOn})
  • 案例演示

img

  1. 时间选择器展示
  • 代码展示
     Text(this.date.toDateString())DatePicker({selected:$$this.date})
  • 效果演示

img

5.Select展示

  • 代码展示
   Text('mySelect' + this.select)Select([{ value: 'vip' },{ value: '绿钻' },{ value: '黄钻' }]).value($$this.select)
  • 效果展示

img

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com